找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2613|回复: 0
打印 上一主题 下一主题
收起左侧

串口通讯中断法程序

[复制链接]
跳转到指定楼层
楼主
ID:71259 发表于 2014-12-30 01:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


  1. #include<reg52.h>

  2. unsigned char code trdata[]={'f','r','e','e','d','o','m',0x0a,0x00};
  3. sbit P32=P3^2;  //INT0的控制管脚
  4. unsigned char i,tmp;

  5. void delay1ms(unsigned int n)   //1ms基准延时
  6. {
  7. unsigned i;
  8. while(n--)
  9.   for(i=0;i<115;i++);
  10. }

  11. void main()
  12. {
  13. TMOD=0x20;  //定时器工作方式2,  8位自动重装
  14. TH1=TL1=0xfd;  //产生9600的bps
  15. TR1=1;     //启动T1
  16. EA=1;  //开放总中断
  17. ES=1;  //允许串口中断
  18. EX0=1;  //允许INT0中断
  19. SCON=0x50;  //串口工作方式1,允许接受数据
  20. PCON=0x00;  //  不倍增bps
  21. while(1); //无限循环等待中断
  22.   
  23. }

  24. void int0() interrupt 0   //INT0的中断编号
  25. {
  26. if(P32==0){
  27.   delay1ms(20);  //消陡
  28.   if(P32==0){
  29.    i=0;
  30.    while(trdata[i]!=0x00){
  31.     SBUF=trdata[i];
  32.     while(!TI);    //等待数据传送,传完一个字节后TI=1
  33.     TI=0;
  34.     i++;
  35.    }
  36.    while(!P32);   //等待按键释放
  37.   }
  38. }
  39. }

  40. void send_char()  interrupt 4  //串口中断的编号
  41. {
  42. if(RI==1){     //收到1字节的数据时,RI=1,申请串口中断
  43.   RI=0;     //软件清0
  44.   tmp=SBUF;
  45.   P0=tmp;
  46.   SBUF=tmp;  //向PC发送数据
  47.   while(!TI);  //等待发送
  48.   TI=0;   //清0
  49. }
  50. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表