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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3764|回復: 5
收起左側

匯編用單片機定時器0產生1s時間不準

[復制鏈接]
ID:481844 發表于 2019-7-28 15:44 | 顯示全部樓層 |閱讀模式
想做一個60秒倒計時的單片機程序,晶振為11.0592,在用定時器0產生1S的時間時發現1s的時間產生不準,設定的時間為每50ms產生一次中斷,每20次秒減一,實際測試時,每20次秒減一大概為實際時間的7秒左右,每30次減一秒的時間和實際時間比較接近,想問一下是哪里出的問題,謝謝!
SharedScreenshot.jpg

單片機匯編語言源程序如下:
        SECOND EQU 30H
        TCOUNT EQU 31H
        ORG 0H
        JMP START
        ORG 0BH
        JMP TIMER0
START:                                //初始化
        SETB EA
        SETB ET0
        MOV TMOD,#01H
        MOV TH0,#(65536-46080)/256
        MOV TL0,#(65536-46080) MOD 256
        SETB TR0
        MOV DPTR,#LED     ;數碼管顯示
        MOV SECOND,#60    ;60S
        MOV TCOUNT,#30   
LOOP:                                     //數碼管掃描
        MOV A,SECOND
        MOV B,#10
        DIV AB
        MOVC A,@A+DPTR
        MOV P0,A
        CLR P2.0
        LCALL DELAY
        SETB P2.0
        MOV A,B
        MOVC A,@A+DPTR
        MOV P0,A
        CLR P2.1        
        LCALL DELAY
        SETB P2.1
        JMP LOOP
DELAY:          //延時
        MOV R0,#2
D1: MOV R1,#50
        DJNZ R1,$
        DJNZ R0,D1
        RET
TIMER0:                                  //定時器0中斷
        PUSH ACC
        PUSH PSW
        SETB RS0
        MOV TH0,#(65536-46080)/256
        MOV TL0,#(65536-46080) MOD 256
        DEC TCOUNT
        DJNZ TCOUNT,NEXT    //產生1S時間
        MOV A,SECOND
        CJNE A,#00,NEXT1    //判斷60S是否減到0
        MOV TCOUNT,#20
        MOV SECOND,#60
        POP PSW
        POP ACC
        RETI
NEXT:
        POP PSW
        POP ACC
        RETI
NEXT1:
        MOV TCOUNT,#30      //
        DEC SECOND        //秒減一
        JMP NEXT
LED:                                 //數碼管段碼
DB 0x3f
DB 0x06
DB 0x5b
DB 0x4f
DB 0x66
DB 0x6d
DB 0x7d
DB 0x07
DB 0x7f
DB 0x6f
        END


回復

使用道具 舉報

ID:100312 發表于 2019-7-28 22:45 | 顯示全部樓層
(65536-46080)/256
回復

使用道具 舉報

ID:401564 發表于 2019-7-29 08:39 | 顯示全部樓層
定時器進入中斷之后并沒有重新啟動定時器,中斷返回之前要先啟動定時器
晶振最好是用12MHZ的,或者是用片上的24MHZ,11.0592MHZ的時間不好計算
回復

使用道具 舉報

ID:123289 發表于 2019-7-29 08:49 | 顯示全部樓層
你用的是硬延時,標準的51是很容易計算準確的。但果是改良51就麻煩了,它采用流水取指結構,取值會提升1-12倍,你必須弄清楚執行的指令所占用的時鐘周期,但同樣一條指令可能執行周期會不一樣(要看這條指令能不能流水)。
估計你不能明白以上說明,查看一下相關流水取指架構,或CALL我。
回復

使用道具 舉報

ID:307020 發表于 2019-7-30 11:17 | 顯示全部樓層
必然的,11.059本身就不是整數,等分多少也成不了整數,準不了;換成整數的晶振試試是個好辦法。其它的誤差先不管,至少能分出整數。
回復

使用道具 舉報

ID:267330 發表于 2019-7-30 15:03 | 顯示全部樓層
匯編定時應該準確的啊定時器進入中斷之后并沒有重新啟動定時器,中斷返回之前要先啟動定時器
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天插天天操 | 欧美视频免费在线 | 免费精品视频在线观看 | 久久成人av电影 | 中文字幕99 | 在线国产中文字幕 | 99精品免费久久久久久日本 | 亚洲一区国产精品 | 中文字幕二区 | 亚洲 欧美 另类 综合 偷拍 | 欧美日韩精品一区二区三区四区 | 色偷偷噜噜噜亚洲男人 | 欧美日韩久久久久 | 精品国产伦一区二区三区观看说明 | 日韩视频中文字幕 | 成人精品鲁一区一区二区 | 不卡一二三区 | 五月天国产在线 | 欧美日本在线观看 | 一本一道久久a久久精品综合 | 中文字幕在线观看一区二区 | 日韩电影在线一区 | 99福利视频| 色性av | 狠狠色综合久久婷婷 | 亚洲国产二区 | 色网在线观看 | 99精品一区二区 | 视频一区在线 | 日韩精品成人网 | 欧美成人h版在线观看 | 毛片网站在线观看视频 | 欧美视频1区 | 国产精品一区二区三区在线 | 欧美精品一区二区三区在线 | 成人在线国产 | 中文在线亚洲 | 日韩亚洲欧美一区 | 色www精品视频在线观看 | 国产午夜精品久久 | 日本在线观看网址 |