欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

匯編用單片機定時器0產(chǎn)生1s時間不準

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:481844 發(fā)表于 2019-7-28 15:44 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
想做一個60秒倒計時的單片機程序,晶振為11.0592,在用定時器0產(chǎn)生1S的時間時發(fā)現(xiàn)1s的時間產(chǎn)生不準,設(shè)定的時間為每50ms產(chǎn)生一次中斷,每20次秒減一,實際測試時,每20次秒減一大概為實際時間的7秒左右,每30次減一秒的時間和實際時間比較接近,想問一下是哪里出的問題,謝謝!


單片機匯編語言源程序如下:
        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     ;數(shù)碼管顯示
        MOV SECOND,#60    ;60S
        MOV TCOUNT,#30   
LOOP:                                     //數(shù)碼管掃描
        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    //產(chǎn)生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:                                 //數(shù)碼管段碼
DB 0x3f
DB 0x06
DB 0x5b
DB 0x4f
DB 0x66
DB 0x6d
DB 0x7d
DB 0x07
DB 0x7f
DB 0x6f
        END


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

使用道具 舉報

沙發(fā)
ID:100312 發(fā)表于 2019-7-28 22:45 | 只看該作者
(65536-46080)/256
回復(fù)

使用道具 舉報

板凳
ID:401564 發(fā)表于 2019-7-29 08:39 | 只看該作者
定時器進入中斷之后并沒有重新啟動定時器,中斷返回之前要先啟動定時器
晶振最好是用12MHZ的,或者是用片上的24MHZ,11.0592MHZ的時間不好計算
回復(fù)

使用道具 舉報

地板
ID:123289 發(fā)表于 2019-7-29 08:49 | 只看該作者
你用的是硬延時,標準的51是很容易計算準確的。但果是改良51就麻煩了,它采用流水取指結(jié)構(gòu),取值會提升1-12倍,你必須弄清楚執(zhí)行的指令所占用的時鐘周期,但同樣一條指令可能執(zhí)行周期會不一樣(要看這條指令能不能流水)。
估計你不能明白以上說明,查看一下相關(guān)流水取指架構(gòu),或CALL我。
回復(fù)

使用道具 舉報

5#
ID:307020 發(fā)表于 2019-7-30 11:17 | 只看該作者
必然的,11.059本身就不是整數(shù),等分多少也成不了整數(shù),準不了;換成整數(shù)的晶振試試是個好辦法。其它的誤差先不管,至少能分出整數(shù)。
回復(fù)

使用道具 舉報

6#
ID:267330 發(fā)表于 2019-7-30 15:03 | 只看該作者
匯編定時應(yīng)該準確的啊定時器進入中斷之后并沒有重新啟動定時器,中斷返回之前要先啟動定時器
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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