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

標(biāo)題: 匯編用單片機(jī)定時(shí)器0產(chǎn)生1s時(shí)間不準(zhǔn) [打印本頁(yè)]

作者: 心靈的塵埃    時(shí)間: 2019-7-28 15:44
標(biāo)題: 匯編用單片機(jī)定時(shí)器0產(chǎn)生1s時(shí)間不準(zhǔn)
想做一個(gè)60秒倒計(jì)時(shí)的單片機(jī)程序,晶振為11.0592,在用定時(shí)器0產(chǎn)生1S的時(shí)間時(shí)發(fā)現(xiàn)1s的時(shí)間產(chǎn)生不準(zhǔn),設(shè)定的時(shí)間為每50ms產(chǎn)生一次中斷,每20次秒減一,實(shí)際測(cè)試時(shí),每20次秒減一大概為實(shí)際時(shí)間的7秒左右,每30次減一秒的時(shí)間和實(shí)際時(shí)間比較接近,想問(wèn)一下是哪里出的問(wèn)題,謝謝!


單片機(jī)匯編語(yǔ)言源程序如下:
        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:          //延時(shí)
        MOV R0,#2
D1: MOV R1,#50
        DJNZ R1,$
        DJNZ R0,D1
        RET
TIMER0:                                  //定時(shí)器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時(shí)間
        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



作者: s414545584    時(shí)間: 2019-7-28 22:45
(65536-46080)/256
作者: Y_G_G    時(shí)間: 2019-7-29 08:39
定時(shí)器進(jìn)入中斷之后并沒(méi)有重新啟動(dòng)定時(shí)器,中斷返回之前要先啟動(dòng)定時(shí)器
晶振最好是用12MHZ的,或者是用片上的24MHZ,11.0592MHZ的時(shí)間不好計(jì)算
作者: yzwzfyz    時(shí)間: 2019-7-29 08:49
你用的是硬延時(shí),標(biāo)準(zhǔn)的51是很容易計(jì)算準(zhǔn)確的。但果是改良51就麻煩了,它采用流水取指結(jié)構(gòu),取值會(huì)提升1-12倍,你必須弄清楚執(zhí)行的指令所占用的時(shí)鐘周期,但同樣一條指令可能執(zhí)行周期會(huì)不一樣(要看這條指令能不能流水)。
估計(jì)你不能明白以上說(shuō)明,查看一下相關(guān)流水取指架構(gòu),或CALL我。
作者: wj_yuq    時(shí)間: 2019-7-30 11:17
必然的,11.059本身就不是整數(shù),等分多少也成不了整數(shù),準(zhǔn)不了;換成整數(shù)的晶振試試是個(gè)好辦法。其它的誤差先不管,至少能分出整數(shù)。
作者: jiangkeqin_sy    時(shí)間: 2019-7-30 15:03
匯編定時(shí)應(yīng)該準(zhǔn)確的啊定時(shí)器進(jìn)入中斷之后并沒(méi)有重新啟動(dòng)定時(shí)器,中斷返回之前要先啟動(dòng)定時(shí)器




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1