新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 都是main()函數的循環執行惹的禍題

        都是main()函數的循環執行惹的禍題

        作者: 時間:2016-11-29 來源:網絡 收藏
        就在今天好好的一個程序,語發基本上都沒有任何錯誤,和官方的資料都對照了也沒有什么問題但是原本好好的程序就是定時器打不開了。為什么呢?今天又大概6個小時的時間都浪費在這個不起眼的自己曾經不知道也沒注意的問題上。

        首先我跟大家說下我的一下代碼需要實現的功能,非常簡單就是在定時其溢出也就是進入中斷之后單片機通過串口給我的上位機發送一個驗證字符H55,但是調試了一個下午就是沒法實現。大家先看看以下程序!

        本文引用地址:http://www.104case.com/article/201611/323504.htm
        void main(void){main_init();     }//-----------------主函數初始化------------------------------------void main_init(void){EA=1;//開總中斷uart_init();timer0_init();}//-------------------串行口中斷--------------------------void uart_rec() interrupt 4{if(RI){RI=0;Uart_RD=SBUF;uart_send(Uart_RD);}}//------------------定時器0初始化函數----------------------------void timer0_init(void){EA=1;ET0  =1    ;TR0  =1    ;AUXR|=0X80;TMOD|=0x01;TH0  =0x00;TL0   =0x00;   }//------------------定時器0中斷服務函數----------------------------void timer0() interrupt 1{TH0  =0xff;TL0   =0x00;uart_send(0x55);    }

        相信大家程序也看完了,我敢保證單片機C編程基礎比較差的肯定找不這問題的所在!其實整個程序的問題主要是出在主函數沒有一個while(1);死循環而程序一直循環執行主函數循環一次的時間小于定時器的定時時間00~65536,故而每次循環都會給定時器的高低八位重新初始化賦值h00、h00,所以導致定時器一直無法溢出去執行定時器中斷函數。相信我說道這里單價應該明白怎么回事了吧!
        以本人所犯之錯,希望大家引以為戒!!!



        關鍵詞: main循環執

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 右玉县| 石首市| 黎平县| 广宗县| 乌兰察布市| 称多县| 卢湾区| 锦屏县| 丰台区| 明水县| 乐山市| 秦皇岛市| 鄂伦春自治旗| 武功县| 丹巴县| 伽师县| 平安县| 临潭县| 定日县| 阆中市| 新泰市| 焦作市| 双城市| 清河县| 合川市| 饶平县| 淳安县| 嵩明县| 德州市| 伊宁市| 陆良县| 达拉特旗| 铜梁县| 新源县| 宜都市| 潼关县| 阳高县| 绥滨县| 光山县| 海阳市| 永安市|