久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > AT89S52兩單片機之間的通信 C程序

AT89S52兩單片機之間的通信 C程序

作者: 時間:2016-11-23 來源:網絡 收藏
#include

#define uint unsigned int
#define uchar unsigned char
sbit key1 = P1^0;//按鍵位定義
sbit key2 = P1^1;
sbit key3 = P1^2;
sbit key4 = P1^3;

本文引用地址:http://cqxgywz.com/article/201611/320335.htm

void send(uchar key_num)//通過串口發送按鍵值子函數
{
SBUF = key_num;
while(!TI);
TI = 0;
}

void delay(uint z)//延時_ms子函數
{
uint x,y;
for(x = 0;xfor(y = 0;y<125;y++);
}

uint key_scan()//鍵盤掃描子函數,帶返回值num
{
uint num;
if(key1 == 0)//鍵1按下則數碼管將顯示1
{
delay(5);
if(key1 ==0)
{num = 1;}
}


if(key2 == 0)//鍵2按下則數碼管將顯示2
{
delay(5);
if(key2 ==0)
{num = 2;}
}


if(key3 == 0)//鍵3按下則數碼管將顯示3
{
delay(5);
if(key3 ==0)
{num = 3;}
}


if(key4 == 0)//鍵4按下則數碼管將顯示4
{
delay(5);
if(key4 ==0)
{num = 4;}
}

return num;//返回值為num
}

void scon_init()//初始化串口子函數
{
TMOD = 0x20;
TH1 = 0xfd;
TL1 = 0xfd;
TR1 = 1;
SM0 = 0;
SM1 = 1;
EA = 1;
ES = 1;
}
void main()
{
scon_init();//初始化串口
while(1)
{
send(key_scan());//不停掃描并發送按鍵值
}
}


#include
#define uint unsigned int
#define uchar unsigned char

uchar code tab[]={//數碼管字形
0x40,0x79,0x24,0x30,
0x19,0x12,0x02,0x78,
0x00,0x10,0x08,0x03,
0x46,0x21,0x06,0x0e};

void scon_init()//串口寄存器初始化
{
TMOD = 0x20;
TH1 = 0xfd;
TL1 = 0xfd;
TR1 = 1;
REN = 1;//注意REN的位置
SM0 = 0;
SM1 = 1;
EA = 1;
ES = 1;
}

void main()
{
scon_init();//調用串口初始化子函數
while(1);//等待串口中斷
}

void ser() interrupt 4//串口中斷子函數
{
uchar a;
RI = 0;
a = SBUF;//將接收到在SBUF中的key值送給變量a
P2 = tab[a];//在串口中斷中顯示字形
}



關鍵詞: AT89S52單片機通

評論


技術專區

關閉