久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6251|回復: 7
打印 上一主題 下一主題
收起左側

STC12C5A60S2串口通迅+1定時器+紅外接收+3個軟件定時器程序

  [復制鏈接]
跳轉到指定樓層
樓主
之前發了個STC89C52RC單片機的串口+定時器
然后做綜合程序時發現,8K存儲真心不夠用

手頭大容量的只有STC12C5A60S2, 移植過程遇到各種問題
首先是定時器, STC12C5A60S2沒有定時器2
且用了串口1后, 定時器1會沖突
關鍵是這句ET1 = 1;   //中斷打開
一開就沖突

要么只有串口能用, 要么只有紅外能用
花了二天時間才解決并存問題

發給需要的程友, 在此基礎上可以加入各種模塊





串口可發送字符串給單片機, 單片機接收后再返回(注: 必需以~號結尾)



紅外接收, 按下遙控器后, 串口會輸出相應碼值






  1. /***********************************
  2. *       STC12C5A60S2               *
  3. ***********************************/
  4. //定時器相當于電腦的多任務,多線程

  5. #include "config.h"                //公共變量
  6. #include "command.h"        //公共函數
  7. #include "UART.h"                //串口文件
  8. #include "PCA.h"                //軟件定時器
  9. #include "infrared.h"        //紅外接收

  10. //****************** 主程序 *******************
  11. void main()
  12. {
  13.         UART_main();                                //串口+定時器初始化
  14.    
  15.         i1=0,i2=0;i3=0;i4=0;cmd1=0;        //變量初始化

  16.         PCA_Timer0 = 15000*25;                //CCAP0軟件定時
  17.         PCA_Timer1 = 15000*50;                //CCAP1軟件定時
  18.         PWMn_init();                                //初始化PCA

  19.     while (1) {                                        //無限循環
  20.         UART1_main();                        //串口接收發送
  21.                 if(irok) {              //如果接收好了進行紅外處理
  22.                         Ircordpro();
  23.                         irok=0;
  24.                 }
  25.                 if(irpro_ok) {          //如果處理好后進行工作處理,如按對應的按鍵后顯示對應的數字等
  26.                         Ir_work();
  27.                 }
  28.     }
  29. }

  30. void EX0_ISR (void) interrupt 0 //外部中斷0服務函數
  31. {
  32.         static uchar i;             //接收紅外信號處理
  33.         static bit startflag;       //是否開始處理標志位

  34.         if(startflag) {                        
  35.                 if(irtime<63&&irtime>=33) { //引導碼 TC9012的頭碼,9ms+4.5ms
  36.             i=0;
  37.                 }
  38.                 irdata[i]=irtime;//存儲每個電平的持續時間,用于以后判斷是0還是1
  39.                 irtime=0;
  40.                 i++;
  41.                 if(i==33) {
  42.                           irok=1;i=0;
  43.                   }
  44.         } else {
  45.                 irtime=0;
  46.                 startflag=1;
  47.         }
  48. }

  49. //********** 定時器0 ***********
  50. void time0() interrupt 1
  51. {
  52.         TR0=0;
  53.         irtime++;  //用于計數2個下降沿之間的時間

  54.         //定時器0,和紅外計數共用,注:不能加延時函數,否則會影響紅外接收
  55.         i7++;
  56.         if(i7>100){
  57.         LED7=~LED7;
  58.         i7=0;
  59.         }
  60.         TR0=1;   
  61. }

  62. //********** 定時器1 ***********
  63. void time1() interrupt 3  //不能刪除,不要添加代碼,因為和UART1() interrupt 4沖突
  64. {        
  65.          
  66. }

  67. //********** 串口1中斷程序 ***********
  68. void UART1() interrupt 4
  69. {  
  70.         if(RI) {                                                //判斷是接收中斷產生
  71.                 RI=0;                                                //標志位清零               
  72.                 if(SBUF!='~') {                                //如果結尾不是~符號
  73.                         buf1[i1]=SBUF;                        //值存到數組
  74.                 }
  75.                 i1++;                                                //累加
  76.                 if(SBUF=='~') {                                //如果值為~符號         
  77.                         cmd1=1;                                        //設結束標志
  78.                 }        
  79.         }
  80.         if(TI) {                        //如果是發送標志位,清零
  81.                 TI=0;
  82.         }
  83. }

  84. /******************************
  85. *       PCA中斷測試程序
  86. *       CCAP0軟件定時
  87. *       CCAP1軟件定時
  88. *       PCA計數器(溢出中斷)
  89. *******************************/
  90. void PCA_interrupt (void) interrupt 7
  91. {
  92.         PCA_interrupt7();
  93. }
復制代碼

全部資料51hei下載地址:
STC12C5A60S2串口通迅+1定時器+紅外接收+3個軟件定時器.zip (51.38 KB, 下載次數: 176)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:229821 發表于 2019-3-28 07:39 | 只看該作者
不錯的東西。很好。收藏了。。
回復

使用道具 舉報

板凳
ID:229821 發表于 2019-4-1 19:02 | 只看該作者
謝謝分享。下載了。
回復

使用道具 舉報

地板
ID:148033 發表于 2019-4-6 17:59 | 只看該作者
謝謝樓主好好學習
回復

使用道具 舉報

5#
ID:81075 發表于 2019-4-9 18:07 | 只看該作者
我也正遇到這個問題,正好看看!
回復

使用道具 舉報

6#
ID:493097 發表于 2019-4-28 12:06 | 只看該作者
正好在找這東東~謝謝lz分享
回復

使用道具 舉報

7#
ID:852256 發表于 2020-12-1 14:40 來自手機 | 只看該作者
樓主用心啦,謝謝
回復

使用道具 舉報

8#
ID:21545 發表于 2024-7-6 22:36 | 只看該作者
正在找剛好看到了,謝謝了!!!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: www.久久久久久久久 | 免费看日韩视频 | 久久国产综合 | 男女视频在线免费观看 | 久久精品视频99 | 夜夜草视频 | 成人av电影网 | 天堂成人国产精品一区 | 久久久久久亚洲 | 国产精品久久久久无码av | 欧美中文一区 | www.99re| 一区二区三区国产 | 天堂av资源| 一区二区国产精品 | 九九热精品免费 | 成人免费视屏 | 北条麻妃视频在线观看 | 精品免费 | 亚洲少妇综合网 | 亚州精品天堂中文字幕 | 超碰av免费 | 久久精品二区亚洲w码 | 欧美精品一区二区三区在线 | 日韩中文字幕在线 | 国产精品久久久久久吹潮 | 99国产精品久久久久久久 | 一区二区精品 | 伊人久麻豆社区 | 黄色免费网址大全 | 国产xxxx岁13xxxxhd | 久久精品av麻豆的观看方式 | 国产精品久久久久久久7777 | 天堂久 | 精品产国自在拍 | 日韩视频在线播放 | 国产不卡视频 | 久久一视频 | 欧美一区在线视频 | 男女久久久 | 欧美一区二区二区 |