200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 单片机8255c语言程序 51单片机8255驱动C程序

单片机8255c语言程序 51单片机8255驱动C程序

时间:2018-07-29 21:41:39

相关推荐

单片机8255c语言程序 51单片机8255驱动C程序

《51单片机8255驱动C程序》由会员分享,可在线阅读,更多相关《51单片机8255驱动C程序(5页珍藏版)》请在人人文库网上搜索。

1、51单片机8255驱动C程序/*- 库文件名称:driver8155.h 功能描述:驱动8155,不需要了解8255的工作原理,透明操作8255的三个输入输出口PA、PB、PC 读A口只需要调用rd_PA,写则需要调用wr_PA;B、C操作也一样 全局变量: IO_flags,在其它程序中不能对其改写 特殊说明: 无 /-*/ #include unsigned char const cfg_table8= 0x80, /*b, ;c=out b=out a=out*/ 0x90, /*b, ;c=out b=out a=in */ 0x82, /*b, ;c=out b=in a=out*/。

2、 0x92, /*b, ;c=out b=in a=in */ 0x89, /*b, ;c=in b=out a=out*/ 0x99, /*b, ;c=in b=out a=in */ 0x8B, /*b, ;c=in b=in a=out*/ 0x9B, /*b, ;c=in b=in a=in */ ; unsigned char rd_mem(unsigned char mem_ad) void PABC_config(void ) a8255_CON=cfg_tableIO_flags; char rd_PA(void) /*读PA口*/ unsigned char PA_data;。

3、 ACC=IO_flags; /*把状态标志字读到ACC便于进行位操作*/ do IO_flagsA=1; /*置PA状态标志位为高-输入*/ IO_flags=ACC; PABC_config(); /*调用配置子程序,完成对8255的设置*/ ACC=IO_flags; while(IO_flagsA=0); /*判断状态标志位是否为高*/ /*控制字设置完成*/ PA_data=a8255_PA; /*把PA口的数据读到PA_data*/ return(PA_data); /*返回PA_data*/ char rd_PB(void) /*读PB口*/ unsigned char PB_d。

4、ata; ACC=IO_flags; /*把状态标志字读到ACC便于进行位操作*/ do IO_flagsB=1; /*置PB状态标志位为高-输入*/ IO_flags=ACC; PABC_config(); /*调用配置子程序,完成对8255的设置*/ ACC=IO_flags; while(IO_flagsB=0); /*判断状态标志位是否为高*/ /*控制字设置完成*/ PB_data=a8255_PB; /*把PA口的数据读到PB_data*/ return(PB_data); /*返回PB_data*/ char rd_PC(void) /*读PC口*/ unsigned char 。

5、PC_data; ACC=IO_flags; /*把状态标志字读到ACC便于进行位操作*/ do IO_flagsC=1; /*置PC状态标志位为高-输入*/ IO_flags=ACC; PABC_config(); /*调用配置子程序,完成对8255的设置*/ ACC=IO_flags; while(IO_flagsC=0); /*判断状态标志位是否为高*/ /*控制字设置完成*/ PC_data=a8255_PC; /*把PC口的数据读到PC_data*/ return(PC_data); /*返回PC_data*/ void wd_PA(unsigned char PA_data) /*。

6、写PA口*/ ACC=IO_flags; /*把状态标志字读到ACC便于进行位操作*/ IO_flagsA=0; /*置PA状态标志位为低-输出*/ IO_flags=ACC; /*位操作完成,把ACC的内容写回状态标志字*/ PABC_config(); /*调用配置子程序,完成对8255的设置*/ ACC=IO_flags; while(IO_flagsA=1); /*判断状态标志位是否为高 为高,设置未完成,需从新设置*/ a8255_PA=PA_data; /*将PA_data的内容送到PA口*/ void wd_PB(unsigned char PB_data) /*写PB口*/ A。

7、CC=IO_flags; /*把状态标志字读到ACC便于进行位操作*/ IO_flagsB=0; /*置PB状态标志位为低-输出*/ IO_flags=ACC; /*位操作完成,把ACC的内容写回状态标志字*/ PABC_config(); /*调用配置子程序,完成对8255的设置*/ ACC=IO_flags; while(IO_flagsB=1); /*判断状态标志位是否为高 为高,设置未完成,需从新设置*/ a8255_PB=PB_data; /*将PB_data的内容送到PB口*/ void wd_PC(unsigned char PC_data) /*写PC口*/ ACC=IO_fl。

8、ags; /*把状态标志字读到ACC便于进行位操作*/ IO_flagsC=0; /*置PC状态标志位为低-输出*/ IO_flags=ACC; /*位操作完成,把ACC的内容写回状态标志字*/ PABC_config(); /*调用配置子程序,完成对8255的设置*/ ACC=IO_flags; while(IO_flagsC=1); /*判断状态标志位是否为高 为高,设置未完成,需从新设置*/ a8255_PC=PC_data; /*将PC_data的内容送到PC口*/ void set_PC(unsigned char PC_num) ACC=IO_flags; IO_flagsC=0;。

9、 ACC=IO_flags; PC_num=PC_num#include #define a8255_PA XBYTE0x7F7C /*PA口地址*/#define a8255_PB XBYTE0x7F7D /*PB口地址*/#define a8255_PC XBYTE0x7F7E /*PC口地址*/#define a8255_CON XBYTE0x7F7F /*控制字地址*/unsigned char IO_flags; /* 用于表示PA、PB、PC的当前输入输出状态内容不能被其它程序改写,操作时ACC=IO_flags*/ sbit IO_flagsA=ACC0; /*PA的当前输入输出。

10、状态置位表示输入,复位表示输出*/sbit IO_flagsB=ACC1; /*PB的当前输入输出状态*/sbit IO_flagsC=ACC2; /*PC的当前输入输出状态*/char rd_PA(void); /*读PA口*/ char rd_PB(void); /*读PB口*/char rd_PC(void); /*读PC口*/void wd_PA(unsigned char PA_data); /*写PA口*/void wd_PB(unsigned char PB_data); /*写PA口*/void wd_PC(unsigned char PC_data); /*写PA口*/void PABC_config(void ); /*写8255控制字*。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。