日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/2 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8255编程c语言程序,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_table[8]={

0x80,???????/*10000000b,???????;c=out??b=out??a=out*/

0x90,???????/*10010000b,???????;c=out??b=out??a=in?*/

0x82,???????/*10000010b,???????;c=out??b=in???a=out*/

0x92,???????/*10010010b,???????;c=out??b=in???a=in?*/

0x89,???????/*10001001b,???????;c=in???b=out??a=out*/

0x99,???????/*10011001b,???????;c=in???b=out??a=in?*/

0x8B,???????/*10001011b,???????;c=in???b=in???a=out*/

0x9B,???????/*10011011b,???????;c=in???b=in???a=in?*/

};

unsigned?char?rd_mem(unsigned?char?mem_ad)

{

} void?PABC_config(void?)

{

a8255_CON=cfg_table[IO_flags];

} char?rd_PA(void)?????????????????????????/*讀PA口*/

{

unsigned?char?PA_data;

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_data;

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?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)??????????/*寫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口*/

{

ACC=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_flags;??????????????/*把狀態標志字讀到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;

ACC=IO_flags;

PC_num=PC_num<<1;

PC_num=(PC_num|0x01);

a8255_CON=PC_num;

}

void?clr_PC(unsigned?char?PC_num)

{

ACC=IO_flags;

IO_flagsC=1;

ACC=IO_flags;

PC_num=PC_num<<1;

PC_num=(PC_num&0xFE);

a8255_CON=PC_num;

}

void?main(void)

{

set_PC(0x01);

}

/*---------------------------------------------------

文件名稱:Config.h

功能描述:端口定義和RAM配置

輸入參數:無

輸出參數:無

特殊說明:根據具體分配的地址,重新設定各值

//----------------------------------------------------------------------------------------------------------------*/

#include

#include

#define a8255_PA??? XBYTE[0x7F7C]???? /*PA口地址*/

#define a8255_PB??? XBYTE[0x7F7D]???? /*PB口地址*/

#define a8255_PC??? XBYTE[0x7F7E]???? /*PC口地址*/

#define a8255_CON?? XBYTE[0x7F7F]???? /*控制字地址*/

unsigned char IO_flags;?? /* 用于表示PA、PB、PC的當前輸入輸出狀態

內容不能被其它程序改寫,操作時ACC=IO_flags*/

sbit??? IO_flagsA=ACC^0;? /*PA的當前輸入輸出狀態

置位表示輸入,復位表示輸出*/

sbit??? IO_flagsB=ACC^1;? /*PB的當前輸入輸出狀態*/

sbit??? IO_flagsC=ACC^2;? /*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控制字*/

總結

以上是生活随笔為你收集整理的8255编程c语言程序,51单片机8255驱动C程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 2014亚洲天堂 | 精品一区二区久久久久蜜桃 | 日本亚洲综合 | 色91视频 | www.欧美精品 | 欧美日本精品 | 亚洲国产123| 欧美浮力影院 | 日韩av一区二区三区四区 | 亚洲综合91 | 最新色网址 | 理论片在线观看理伦片 | 奇米四色网 | 欧美日韩综合精品 | 成人自拍视频网 | 亚洲免费成人 | 一区二区视频免费看 | av在线电影观看 | 成人国产精品一区二区 | 真人毛片视频 | 国产视频分类 | 国产欧美又粗又猛又爽 | 天天色天天爱 | av在线网址大全 | 好大好爽视频 | 最近中文字幕在线mv视频在线 | 香蕉视频在线网址 | 色哟哟国产精品色哟哟 | 九九热在线精品视频 | 好吊一区| 波多野吉衣av无码 | 在线免费黄色av | 黄在线网站 | 男人天堂成人 | 香蕉人人精品 | 亚洲第一天堂av | 日韩人妻无码精品久久免费 | 丰满人妻一区二区三区46 | 男人的天堂狠狠干 | 日韩中文字幕有码 | 秋霞国产午夜精品免费视频 | 色哟哟官网 | 夜夜操网 | 日本午夜一级 | 免费看美女被靠到爽的视频 | 十大黄台在线观看 | 亚洲国产黄 | 亚洲欧美成人综合 | 91免费黄视频 | 亚洲一区二区图片 | 欧美在线免费看 | 韩国91视频 | 欧美一区二区精品 | 欧美色视频在线 | 久久久久久久久久久国产 | 国产一区二区视频在线免费观看 | 国产美女精品一区二区三区 | 99超碰在线观看 | 神马影院午夜伦理 | 亚洲国产aⅴ精品一区二区 日韩黄色在线视频 | 日本不卡一二三 | 婷婷久久五月天 | 国产一区二区中文字幕 | 快播久久| 2022国产精品 | 操啊操 | 中文字幕人妻一区二区 | 女人18毛片毛片毛片毛片区二 | 波多野结衣家庭主妇 | 国产乱色 | 久久精品无码毛片 | 手机av资源| 伊人黄色片 | 就要干就要操 | 国产二区av| 性色av一区二区三区红粉影视 | 国产人澡人澡澡澡人碰视频 | 成人中文字幕在线 | 亚洲伦理在线播放 | 在线视频a | 日韩午夜视频在线观看 | 自拍1区| 波多野结衣激情视频 | 精品影片一区二区入口 | 国产网友自拍 | 久久亚洲第一 | 黄色网页在线播放 | 亚洲欧美日韩综合 | 日韩av无码一区二区三区不卡 | av成人天堂 | 国产欧美日韩综合精品一区二区 | 婷婷综合国产 | 国产黄色免费网站 | 亚洲网站免费观看 | 亚洲天堂色 | 蝌蚪久久 | 色综合久久久久久久 | 在线免费成人网 | 色88久久久久高潮综合影院 |