專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

匯編程序?qū)崿F(xiàn)平方運算

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2011年09月23日   【字體:
P1是位選,p2是段選.
                ORG 0000H
                LJMP MAIN
                ORG 000BH
                LJMP INT

MAIN:           MOV TMOD,#01H
           MOV TH0,#0
           MOV TL0,#1
           SETB EA
           SETB ET0
           SETB TR0
                MOV R6,#0 ;-------------   R6用于存儲1~9

         MOV R4,#44H ;          剛上電時讓第四個數(shù)碼管顯示0

;--------------R1~R4用于存放四個數(shù)碼管對應(yīng)的段碼---------


DISPLAY:         MOV A,R6
           MOV DPTR,#TAB2
           MOVC A,@A+DPTR
           MOV R1,A

           MOV A,R6
           MOV DPTR,#TAB3
           MOVC A,@A+DPTR
           MOV R2,A

PLAY:            MOV P1,#0FFH
                 MOV R7,#100       ;關(guān)非正常微亮
             DJNZ R7,$
                 MOV A,R4
           MOV P1,#7FH
           MOV P2,A
                 MOV R7,#100    ;調(diào)節(jié)亮度
            DJNZ R7,$


                 MOV P1,#0FFH
                 MOV R7,#100        ;關(guān)非正常微亮
           DJNZ R7,$
           MOV A,R1
           MOV P1,#0EFH
           MOV P2,A
                 MOV R7,#100       ;調(diào)節(jié)亮度
           DJNZ R7,$


                 MOV P1,#0FFH
                 MOV R7,#100        ;關(guān)非正常微亮
           DJNZ R7,$
           MOV A,R2
           MOV P1,#0DFH
           MOV P2,A
                               MOV R7,#100         ;調(diào)節(jié)亮度
           DJNZ R7,$
              LJMP DISPLAY
;----------------------------------------------------------
DELAY:           MOV R7,#100
           MOV R3,#100
LAY:             MOV R2,#20
                 DJNZ R2,$
           DJNZ R3,LAY
           DJNZ R7,LAY
           RET
;***********掃描鍵盤子程序*************************
KEYSCAN:
           MOV P1,#0FH
                              JB P1.3,OFF
            MOV R7,#100
           DJNZ R7,$
           JNB P1.3,SCAN
           RET       
SCAN:            MOV A,#07FH
CONTINUE:        MOV P1,A
                 JNB P1.3,RECORD
                 RR A
                 CJNE A,#0FEH,CONTINUE
RECORD:          MOV R0,A       ;R0用于存儲鍵碼
KEYDEAL:         MOV A,R0
                 CJNE A,#7FH,OFF
                 LCALL K4
OFF:             MOV P1,#0FFH
           RET
                        
K4:         INC R6
           LCALL DELAY
           MOV A,R6
           MOV DPTR,#TAB1
           MOVC A,@A+DPTR
           MOV R4,A
           CJNE R6,#10,RETURN  
                MOV R6,#0
RETURN:          RET
;----------------------------------------------------
INT:             LCALL KEYSCAN ;  鍵盤掃描放定時器中斷里面                    
                   MOV TH0,#0
           MOV TL0,#1
           RETI
;------------------------------------------------------
TAB1:  DB 44H,0DEH,62H,52H,0D8H,51H,41H,0D6H,40H,50H
TAB2:  DB 44H,44H,44H,44H,0DEH,62H,52H,0D8H,41H,040H
TAB3:  DB 44H,0DEH,0D8H,50H,41H,51H,41H,50H,0D8H,0DEH
              END


 注意:如果你使用的是STC5608單片機 運行此程序可能會出現(xiàn)的情況:
1,數(shù)碼管閃爍顯示;2,數(shù)碼管顯示1、4、7時會卡死或者只有1、4、7可以正常顯示 ,
如果遇到以上情況建議換用STC5204或換質(zhì)量較高的電源線然后一切就會正常了。

關(guān)閉窗口

相關(guān)文章