我想在51hei-5單片機(jī)開發(fā)板上實(shí)現(xiàn)如下的功能:
上電后讓8個數(shù)碼管顯示右下角的點(diǎn)。按INTO按鍵時八個數(shù)碼管全顯示1,按TO按鍵時,第二位顯示二,按S4按鍵時第三位顯示三,按S5按鍵時第四位顯示五。問題如下圖
我搞了好久百思不得其解啊.現(xiàn)在連編譯都通不過
ORG 000H LJMP MAIN ORG 030H main: setb p2.6 ;上電全顯示點(diǎn) mov p0,#080H clr p2.6 SETB P2.7 mov p0,#00H clr p2.7 lcall ys JNB P3.2,F1 ;等于O轉(zhuǎn)到F1 (八位數(shù)碼管全顯示1) JNB P3.4,F2 ;等于O轉(zhuǎn)到F2 (第二位顯示2) JNB P3.6,F3 ;等于0轉(zhuǎn)到F3 (第三位顯示3) JNB P3.7,F4 ;等于O轉(zhuǎn)到F4 (第四位顯示4) LJMP MAIN F1: SETB P2.6 ;1 MOV P0,#06H CLR P2.6 SETB P2.7 MOV P0,#0FEH CLR P2.7 LCALL YS1S SETB P2.6 ;1 MOV P0,#06H CLR P2.6 SETB P2.7 MOV P0,#0FDH CLR P2.7 LCALL YS1S SETB P2.6 ;1 MOV P0,#06H CLR P2.6 SETB P2.7 MOV P0,#0FBH CLR P2.7 LCALL YS1S SETB P2.6 ;1 MOV P0,#06H CLR P2.6 SETB P2.7 MOV P0,#0F7H CLR P2.7 LCALL YS1S SETB P2.6 ;1 MOV P0,#06H CLR P2.6 SETB P2.7 MOV P0,#0F7H CLR P2.7 LCALL YS1S SETB P2.6 ;1 MOV P0,#06H CLR P2.6 SETB P2.7 MOV P0,#0F7H CLR P2.7 LCALL YS1S SETB P2.6 ;1 MOV P0,#06H CLR P2.6 SETB P2.7 MOV P0,#0F7H CLR P2.7 LCALL YS1S SETB P2.6 ;1 MOV P0,#06H CLR P2.6 SETB P2.7 MOV P0,#0F7H CLR P2.7 LCALL YS1S LJMP MAIN F2: SETB P2.6 ;顯示2 MOV P0,#05BH CLR P2.6 SETB P2.7 MOV P0,#0FDH CLR P2.7 LCALL YS1S LJMP MAIN F3: SETB P2.6 ;顯示3 MOV P0,#04FH CLR P2.6 SETB P2.7 MOV P0,#0FBH CLR P2.7 LCALL YS1S LJMP MAIN F4: SETB P2.6 ;顯示4 MOV P0,#066H CLR P2.6 SETB P2.7 MOV P0,#0F7H CLR P2.7 LCALL YS1S LJMP MAIN YS: MOV R7,#0AH ;延時 YS1: MOV R6,#0FFH YS2: DJNZ R6,YS2 DJNZ R7,YS1 RET YS1S:MOV R5,#0FFH YS1S1:LCALL YS DJNZ R5, YS1S1 RET END
JNB是短轉(zhuǎn)移指令,你那F3離他太遠(yuǎn)了,夠不著哦
你上面的 JNB P3.6,F3 指令,轉(zhuǎn)移的范圍在-128~+127字節(jié)之內(nèi),程序編寫大了,超出范圍是常有的事。
可以在其范圍之內(nèi),加個“接力點(diǎn)”,再用LJMP這個長轉(zhuǎn)移指令(64KB范圍內(nèi))轉(zhuǎn)移一次即可。
你只需要修改為:
JNB P3.2,F11 ;等于O轉(zhuǎn)到F11 (八位數(shù)碼管全顯示1)
JNB P3.4,F22 ;等于O轉(zhuǎn)到F22 (第二位顯示2)
JNB P3.6,F33 ;等于0轉(zhuǎn)到F33 (第三位顯示3)
JNB P3.7,F44 ;等于O轉(zhuǎn)到F44 (第四位顯示4)
F11:Ljmp F1
F22:Ljmp F2
F33:Ljmp F3
F44:Ljmp F4
下面我給你加了四行 這個就是接力點(diǎn),
還有我燒錄這個代碼到51hei-5板子上以后,發(fā)現(xiàn)你這個還有其他的問題,你并沒有循環(huán)檢測按鍵,只是在開機(jī)的時候檢測了一次,所以你必須要在開機(jī)前就按住按鍵不動才能實(shí)現(xiàn)你上面說的效果,你還要慢慢改
關(guān)于轉(zhuǎn)移指令你可以看看這個帖子:
http://zhidao.baidu.com/question/85590549.html
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |