文档详情

12用8255A芯片扩展并行输入输出口.doc

发布:2017-08-29约1.47千字共4页下载文档
文本预览下载声明
CHANGZHOU INSTITUTE OF TECHNOLOGY 单片机实践报告 题目:用8255A芯片扩展并行输入/输出口 学院:延陵学院 班级:10电Y3 姓名: 杨利平 学号实验目的 了解8255A芯片的结构及编程方法。 掌握通过8255A并行口读取开关数据的方法。 实验电路 元器件编号 元器件名称 说明 U1 AT89C52 AT89C52单片机 U2 8255A 可编程并行I/O接口芯片 R1~R8 RES 电阻 D1~D8 LED-RED 红色LED灯 K1~K8 BUTTON 开关 RP1 RESPACK-8 排阻 实验流程图 调试步骤 A通道作为输出口,B通道作为开关量输入口,按下B通道口的某一按钮,则点亮对应序号的A通道的LED灯。 实验代码 #includeintrins.h #includeREGX52.H #includeabsacc.h #define TRUE 1 #define PA8255 XBYTE[0x0000] //定义8255a口地址 #define PB8255 XBYTE[0x2000] //定义8255b口地址 #define COM8255 XBYTE[0x6000] //定义8255控制寄存器地址 void time(unsigned int ucMs); void main(void) { unsigned char p8255t; //存放按键值 COM8255=0x82; //初始化8255 time(30); while(TRUE) { p8255t=PB8255; //从PB口读取开关口状态 PA8255=p8255t; //从PA口输出开关状态 } } void delay_5us(void) //延时5us,晶振改变时只改变这一个函数 { _nop_(); _nop_(); } /*delay_50us*/ void delay_50us(void) //延时50us { unsigned char i; for(i=0;i4;i++) { delay_5us(); } } /******************延时100us********************/ void delay_100us(void) //延时100us { delay_50us(); delay_50us(); } /*延时单位:ms*/ void time(unsigned int ucMs) { unsigned char j; while(ucMs0) { for(j=0;j10;j++) delay_100us(); ucMs--; } } 运行效果
显示全部
相似文档