电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> 单片机 >> 正文

51单片机输出波形程序【汇编】

作者:佚名    文章来源:本站原创    点击数:    更新时间:2010/10/4

;********WAVE-E6000/T**************************
;*MCU:          AT89C51                       *
;*MCU-crystal:  6M                            *
;*Version:      00                            *
;*Last Updata:                                *
;*Author:                      *
;*Description:                                *
;**********************************************  
           KEY_BUF    EQU  22H    ;定义为标志寄存器   
           C_HOUR     EQU  23H
           C_MINUTE   EQU  24H
           C_SECOND   EQU  25H
;-----------------------------------------------
            ORG  0000H       ;
            AJMP MAIN        ;到主程序
            ORG  000BH       ;    
            AJMP QI          ;到定时器中断0
            ORG  0030H       ;
;**********************************************
    MAIN:   MOV 21H,#00H     ;清通用寄存器
            MOV 22H,#00H     ;
            MOV 23H,#00H     ;
            MOV 24H,#00H     ;
            MOV 25H,#00H     ;
            MOV 26H,#00H     ;
            CLR 00H          ;清位标志
            CLR 01H          ;
            CLR 02H          ;
            CLR 03H          ;
            MOV TL0,#00H     ;
            MOV TH0,#00H     ;
            MOV TMOD,#01H    ;设置定时器为方式1
            MOV SP,#60H      ;
            SETB EA          ;开总中断
            SETB ET0         ;开定时器中断0
            SETB TR0         ;定时器启动开始计数
;*********************************************
LOOP:
            CALL  KEY        ;
            CALL  DISP       ;
            AJMP  LOOP       ;
;********************************************
QI:         PUSH ACC         ;入栈保护现场
            PUSH PSW         ;
            CLR  EA          ;
            CLR  TR0         ;
            MOV  TH0,R1      ;
            MOV  TL0,R0      ;
            CPL  P1.0        '
TORETI:  
            SETB  EA         ;
            SETB  TR0        ;
            POP   PSW        ;出栈
            POP   ACC        ;
            RETI             ;
;*******************************************


;*******************************************
KEY:
            MOV    P1,#0FFH       ;置P1口为1
            MOV    A,P1           ;
            MOV    KEY_BUF,A      ;
            CJNE   A,#0FF,KEY1    ;

            JB     P3.0,K1        ;
            AJMP   KEY1           ;
K1:         JB     P3.1,K2        ;
            AJMP   KEY1           ;
K2:         JB     P3.2,KEY_OUT   ;
            AJMP   KEY1           ;

KEY1:
            CALL   DELAY10MS      ;

            MOV    P1,#0FFH       ;置P1口为1
            MOV    A,P1           ;
            MOV    KEY_BUF,A      ;
            CJNE   A,#0FF,KEY3    ;

KEY2:       JB     P3.0,K1        ;
            AJMP   KEY3           ;
K1:         JB     P3.1,K2        ;
            AJMP   KEY3           ;
K2:         JB     P3.2,K3        ;
            AJMP   KEY3           ;
KEY_OUT:    RET                   ;
;------------------------------------------
KEY3:      
            JB     P2.0,S1        ;
S1_1:
            CALL   DISP           ;
            JNB    P2.0,S1_1      ;
  
            CLR    EA             ;
            MOV    R1,#3CH        ;
            MOV    R0,#0B0H       ;

            MOV C_HOUR,#00H       ;10Hz
            MOV C_MINUTE,#10H     ;0010HZ来表示

            SETB   TR0            ;
            SETB   EA             ;
            AJMP   KEY_OUT        ;
;-----------------------------------------  
S1:         
            JB     P2.1,S2        ;
S2_2:
            CALL   DISP           ;
            JNB    P2.1,S2_2      ;
  
            CLR     EA            ;
            MOV R1, #0D6H         ;
            MOV R0, #78H          ;

            MOV C_HOUR,#01H       ;100Hz
            MOV C_MINUTE,#00H     ;0100HZ来表示

            SETB    TR0           ;
            SETB    EA            ;
            AJMP    KEY_OUT       ;
;----------------------------------------
S3:         
            JB     P2.2,S4        ;
S2_3:
            CALL   DISP           ;
            JNB    P2.1,S2_3      ;
  
            CLR     EA            ;
            MOV R1, #0F6H         ;
            MOV R0, #3CH          ;

            MOV C_HOUR,#02H       ;200Hz
            MOV C_MINUTE,#00H     ;0200HZ来表示

            SETB    TR0           ;
            SETB    EA            ;
            AJMP    KEY_OUT       ;
;----------------------------------------
S4:

 


;****************************************
TAB:       DB 0C0H,0F9H,0A4H,0B0H,99H
           DB 92H,82H,0F8H,80H,90H
;****************************************
DISP:      MOV R6,C_HOUR
           MOV DPTR,#TAB
           MOV A,R6
           SWAP A
           ANL A,#0FH
           MOVC A,@A+DPTR
           MOV P1,A
           CLR P3.3
           ACALL DL             ;SEND DISPPLAY HOUR HIGHT BIT
           SETB P3.3

           MOV A,R6
           ANL A,#0FH
           MOVC A,@A+DPTR
           MOV P1,A
           CLR P3.5
           ACALL DL
           SETB P3.5           ;SEND DISPPLAY HOUR LOW BIT

           MOV R7,C_MINUTE
           MOV A,R7
           SWAP A
           ANL A,#0FH
           MOVC A,@A+DPTR
           MOV P1,A
           CLR P3.6
           ACALL DL
           SETB P3.6            ;SEND DISPPLAY MINUTE HIGHT BIT

           MOV A,R7
           ANL A,#0FH
           MOVC A,@A+DPTR
           MOV P1,A
           CLR P3.7
           ACALL DL
           SETB P3.7            ;SEND DISPLAY MINUTE LOW BIT

           RET
;**************************************
DL1MS:      MOV 30H,#02H        ;延时1MS
DL1:        MOV 31H,#0FFH
DL2:        DJNZ 31H,DL2
            DJNZ 30H,DL1
            RET
;****************************************
 DELAY10MS: 
            MOV R5,#3           ;延时10MS
 DL1:       MOV R6,#200
 DL2:       MOV R7,#125
 DL3:       DJNZ R7,DL3
            DJNZ R6,DL2
            DJNZ R5,DL1
            RET
            END

Tags:51单片机,输出波形,程序  
责任编辑:admin
请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
1分 2分 3分 4分 5分

还可以输入 200 个字
[ 查看全部 ] 网友评论
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询