专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

汇编程序实现平方运算

作者:佚名   来源:本站原创   点击数:  更新时间: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 ;          刚上电时让第四个数码管显示0

;--------------R1~R4用于存放四个数码管对应的段码---------


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       ;关非正常微亮
             DJNZ R7,$
                 MOV A,R4
           MOV P1,#7FH
           MOV P2,A
                 MOV R7,#100    ;调节亮度
            DJNZ R7,$


                 MOV P1,#0FFH
                 MOV R7,#100        ;关非正常微亮
           DJNZ R7,$
           MOV A,R1
           MOV P1,#0EFH
           MOV P2,A
                 MOV R7,#100       ;调节亮度
           DJNZ R7,$


                 MOV P1,#0FFH
                 MOV R7,#100        ;关非正常微亮
           DJNZ R7,$
           MOV A,R2
           MOV P1,#0DFH
           MOV P2,A
                               MOV R7,#100         ;调节亮度
           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单片机 运行此程序可能会出现的情况:
1,数码管闪烁显示;2,数码管显示1、4、7时会卡死或者只有1、4、7可以正常显示 ,
如果遇到以上情况建议换用STC5204或换质量较高的电源线然后一切就会正常了。

关闭窗口

相关文章