找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2588|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

串口通訊中斷法程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:71259 發(fā)表于 2014-12-30 01:47 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式


  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基準(zhǔn)延時(shí)
  6. {
  7. unsigned i;
  8. while(n--)
  9.   for(i=0;i<115;i++);
  10. }

  11. void main()
  12. {
  13. TMOD=0x20;  //定時(shí)器工作方式2,  8位自動(dòng)重裝
  14. TH1=TL1=0xfd;  //產(chǎn)生9600的bps
  15. TR1=1;     //啟動(dòng)T1
  16. EA=1;  //開(kāi)放總中斷
  17. ES=1;  //允許串口中斷
  18. EX0=1;  //允許INT0中斷
  19. SCON=0x50;  //串口工作方式1,允許接受數(shù)據(jù)
  20. PCON=0x00;  //  不倍增bps
  21. while(1); //無(wú)限循環(huán)等待中斷
  22.   
  23. }

  24. void int0() interrupt 0   //INT0的中斷編號(hào)
  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);    //等待數(shù)據(jù)傳送,傳完一個(gè)字節(jié)后TI=1
  33.     TI=0;
  34.     i++;
  35.    }
  36.    while(!P32);   //等待按鍵釋放
  37.   }
  38. }
  39. }

  40. void send_char()  interrupt 4  //串口中斷的編號(hào)
  41. {
  42. if(RI==1){     //收到1字節(jié)的數(shù)據(jù)時(shí),RI=1,申請(qǐng)串口中斷
  43.   RI=0;     //軟件清0
  44.   tmp=SBUF;
  45.   P0=tmp;
  46.   SBUF=tmp;  //向PC發(fā)送數(shù)據(jù)
  47.   while(!TI);  //等待發(fā)送
  48.   TI=0;   //清0
  49. }
  50. }
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表