您的位置 首页 测评

单片机通讯程序

发送机发送按键信息,接收机把接受的信息用数码管显示出来发送机程序#includereg52.h>#defineucharunsignedchar#defineuint…

发送机发送按键信息,接收机把承受的信息用数码管显现出来

发送机程序

#include
#define uchar unsigned char
#define uint unsigned int
void delay(uint);
void SET_SYSTEM(void);
uchar KEY_scan(void);

void main()
{
uchar data i;
delay(100);
SET_SYSTEM();
while(1)
{
i=KEY_scan();
if(i)
{
TI=0;
SBUF=i;
while(!TI);
}
}
}
/*************************************************************************************/
void delay(uint t) /* 延时子程序 */
{
uchar i;
while(t–)
{
for(i=0;i<125;i++) {}; /* 12 MHz 晶振大约是 1 ms */
}
}
/*************************************************************************************/
uchar KEY_scan(void) /*键盘扫描程序 (独立式)*/
{
uchar data key;

P1=0xff;
key=P1;
if(key==0xff) return 0;
else
{
delay(10);
key=P1;
if(key==0xff) return 0;
else
{
switch(key)
{
case 0xfe: return 1;break;
case 0xfd: return 2;break;
case 0xfb: return 3;break;
case 0xf7: return 4;break;
case 0xef: return 5;break;
case 0xdf: return 6;break;
case 0xbf: return 7;break;
case 0x7f: return 8;break;
default : return 9;
}
}
}
}
/*************************************************************************************/
void SET_SYSTEM(void)
{
TMOD=0x20; /* 定时器1作业于方法2 */
PCON=PCON&0x07;
TH1=0xfe; /* 设置波特率 */
TL1=0xfe;
SCON=0x50;
IE=0x00; /* 即 EA=0;关一切中止 */
TI=0;
RI=0;
TR1=1;
}
/*************************************************************************************/

接收机程序

#include
#define uchar unsigned char
#define uint unsigned int
void delay(uint);
void SET_SYSTEM(void);
uchar KEY_scan(void);
void LED_display(uchar ,uchar);
uchar xdata IO_8155_order _at_ 0x2100;
uchar xdata IO_8155_PA _at_ 0x2101;
uchar xdata IO_8155_PB _at_ 0x2102;
uchar xdata IO_8155_PC _at_ 0x2103;
uchar data dt=0;
uchar code dig_num[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; /*共阴级数码管的段选码*/
void main()
{
delay(200);
SET_SYSTEM();
IO_8155_order=0x0d; /* 8155 初始化 */
while(1)
{
LED_display(0,dt);
P1=dt;
}
}
/*************************************************************************************/
void delay(uint t) /* 延时子程序 */
{
uchar i;
while(t–)
{
for(i=0;i<125;i++) {}; /* 12 MHz 晶振大约是 1 ms */
}
}
/*************************************************************************************/
void LED_display(uchar d_bit,uchar digit) /* LED 数码管显现子程序*/
{ /*d_bit 表明位选码,digit 表明要显现的数字 */
IO_8155_PC=d_bit; /* 位选码输出*/
IO_8155_PA=dig_num[digit]; /* 段选码输出*/
delay(10);
}
/*************************************************************************************/
void SET_SYSTEM(void)
{
TMOD=0x20; /* 定时器1作业于方法2 */
PCON=PCON&0x07;
TH1=0xfe; /* 设置波特率 */
TL1=0xfe;
SCON=0x50;
IE=0x90; /* 即 EA=1;ES=1;ET1=0;开了串行口中止,关定时器1 的中止 */
TI=0;
RI=0;
TR1=1;
}
/*************************************************************************************/
void RI_RI(void) interrupt 4
{
RI=0;
dt=SBUF;
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/274762.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部