标题:
串口通讯中断法程序
[打印本页]
作者:
daming
时间:
2014-12-30 01:47
标题:
串口通讯中断法程序
#include<reg52.h>
unsigned char code trdata[]={'f','r','e','e','d','o','m',0x0a,0x00};
sbit P32=P3^2; //INT0的控制管脚
unsigned char i,tmp;
void delay1ms(unsigned int n) //1ms基准延时
{
unsigned i;
while(n--)
for(i=0;i<115;i++);
}
void main()
{
TMOD=0x20; //定时器工作方式2, 8位自动重装
TH1=TL1=0xfd; //产生9600的bps
TR1=1; //启动T1
EA=1; //开放总中断
ES=1; //允许串口中断
EX0=1; //允许INT0中断
SCON=0x50; //串口工作方式1,允许接受数据
PCON=0x00; // 不倍增bps
while(1); //无限循环等待中断
}
void int0() interrupt 0 //INT0的中断编号
{
if(P32==0){
delay1ms(20); //消陡
if(P32==0){
i=0;
while(trdata[i]!=0x00){
SBUF=trdata[i];
while(!TI); //等待数据传送,传完一个字节后TI=1
TI=0;
i++;
}
while(!P32); //等待按键释放
}
}
}
void send_char() interrupt 4 //串口中断的编号
{
if(RI==1){ //收到1字节的数据时,RI=1,申请串口中断
RI=0; //软件清0
tmp=SBUF;
P0=tmp;
SBUF=tmp; //向PC发送数据
while(!TI); //等待发送
TI=0; //清0
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1