⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 秒钟0.a51

📁 单片机串口实验的原程序 其简要的概括了程序的手写规范 对单片机初学者来说是很有意义的哟
💻 A51
字号:
       ORG     0000H
BEGIN:  LJMP INIT
       ORG     0003H   ;INT0
       RETI
       ORG     000BH   ;T0 INT
T0:    LJMP    T0INTSR
       RETI
       ORG     0013H   ;1NT1
       RETI
       ORG     001BH   ;T1 INT
       RETI
       ORG     0023H   ;S PORT INT
       RETI
       ORG     002BH   ;T2 INT
       RETI
       ORG     0030H
;=====================================================
;8032 RAM 00H--FFH CLEAR 0
INIT: 
       MOV     R0,#0FFH
       MOV     A, #00H
CLE0FFH:
       MOV     @R0,A
       DJNZ    R0,CLE0FFH

;SET STACK AREA  70H--7FH
       MOV     SP,#70H
;TIMER INIT
       MOV     TMOD,#01H
       MOV     TL0,#0FCH       ;2 E+16 = 65536 = 55536 + 10000(0.05S)
       MOV     TH0,#0D8H       ;D8F0H=55536
;ENABLE INTERRUPT
       SETB    EA
       SETB    ET0
;START UP T0
       SETB    TR0
;SYSTEM NORMAL ,IDENTIFIER "0.0"
       MOV     PSW,#00H
;====================================================================
ENTRK1: NOP
       LCALL   TICHANG;DISPLAY CHARACTER CHANGE
       LCALL   DISPLAY;DISPLAY SUBRUTIN
       SJMP    ENTRK1
;====================================================================
;       2. TICHANG......TIME DATA CHARACTER CHANGE
;       4. DISPLAY......DISPLAY SUBRUTIN
;       6. DELAY60......DELAY 60mS
;       7. DCCHANG......DISPLAY CHARACTER CHANGE
;--------------------------------------------------------------------
;2.------------------------------------------------------------------
;TICHANG
;      TIME DATA CHARACTER CHANGE
;       2. RAM BIT 00H --PRESS TIMESET KEY FLAG     1=PRESSED, 0=NOT
;
;--------------------------------------------------------------------
TICHANG:NOP
       MOV     R7,#4
       MOV     R0,#6FH
       MOV     R1,#33H
TCHANG0:MOV    A,@R1
       LCALL   DCCHANG         ;DISPLAY CHARACTER CHANGE
       CPL     A
       MOV     @R0,A
       DEC     R0
       DEC     R1
       DJNZ    R7,TCHANG0
TICHOUT:NOP
       RET
;--------------------------------------------------------------------

;4.------------------------------------------------------------------
;DISPLAY:
;       DISPLAY SUBRUTIN
;
;   RAM:6FH    CLOCK HORE 10 BIT
;       6EH     CLOCK HORE  1 BIT
;      6DH     CLOCK MIN  10 BIT
;      6CH     CLOCK MIN   1 BIT
;
;--------------------------------------------------------------------
DISPLAY:NOP
       SETB     P1.3
       MOV     P0,6FH
       CLR     P1.0
       LCALL   DELAY60         ;DELAY 60MS
       LCALL   DELAY60         ;DELAY 60MS
       SETB    P1.0

       MOV     P0,6EH
       CLR     P1.1
       LCALL   DELAY60         ;DELAY 60MS
       LCALL   DELAY60         ;DELAY 60mS
       SETB    P1.1

       MOV     P0,6DH
       CLR     P1.2
       LCALL   DELAY60         ;DELAY 60MS
       LCALL   DELAY60         ;DELAY 60MS
       SETB    P1.2

       MOV     P0,6CH
       CLR     P1.3
       LCALL   DELAY60         ;DELAY 60MS
       LCALL   DELAY60         ;DELAY 60MS
       SETB    P1.4
       SETB    P1.7
       SETB    P1.6
       SETB    P1.5
       RET
;--------------------------------------------------------------------


;--------------------------------------------------------------------
;6.------------------------------------------------------------------
;DELAY60:
;      DELAY 100mS FOR NEXT RANGING

;--------------------------------------------------------------------
DELAY60:PUSH    PSW
       MOV     PSW,#00H
       MOV     R3,#6            ;#10          0.5ms * 10 = 5ms 1997-9-3
W60MS: MOV     R4,#0FAH         ;0FAH =250
W500US1:DJNZ    R4,W500US1       ;TIME = 2US   2 US * 250 = 0.5 MS
       DJNZ    R3,W60MS
       POP     PSW
       RET
;-------------------------------------------------------------------
;7.------------------------------------------------------------------
;DCCHANG:
;       DISPLAY CHARACTERS CHANGE ROUTINE
;      NOTE:
;       1. ENTRY A-----LOAD SETOFF
;       2. RET A-------DISPLAY CHARACTER
;--------------------------------------------------------------------
DCCHANG:MOV     DPTR,#CHARAL
       MOVC    A,@A+DPTR
       RET
;CHARACTERS LIST
CHARAL: DB      3FH,06H,5BH,4FH,66H,6DH
;SETOFF    :    00H,01H,02H,03H,04H,05H,
;CHARACTERS:    0,  1,   2,  3,  4 , 5
       DB      7DH,07H,7FH,6FH,77H,7CH
;               06H,07H,08H,09H,0AH,0BH,
;               6,  7,  8,  9,  A,  B,
       DB      39H,5EH,79H,71H,73H,3EH
;               0CH,0DH,0EH,0FH,10H,11H,
;               C,  D,  E,  F,  P,  U,
;--------------------------------------------------------------------
;--------------------------------------------------------------------
;       T0,T1 INTERRUPT SUBROUTINE
;       1. T0INTSR.......T0 INTERRUPT SERVE ROUTINE
;--------------------------------------------------------------------
;--------------------------------------------------------------------
;1.T0INTSR:
;      T0 INTERRUPT SERVE ROUTINE
;
;      1. T0 IS SETED AS 0.01S  TIMER(MODE 1)
;      2. T0 IS SET AS:
;              TL0=F0H
;               TH0=D8H        B8F0H = 55536 = 65536(2 E+16) - 10000
;                              AFTER 50000 uS ,INTRUPT IS HAPPEN
;              IN THIS STATES, T0 TIME IS 50 MS
;--------------------------------------------------------------------
T0INTSR:CLR     ET0
       CLR     TR0
       INC     30H
       MOV     TL0,#0FCH
       MOV     TH0,#0D8H
       SETB    TR0
       SETB    ET0
;5.------------------------------------------------------------------
; TIMECAL:
;        TIME CALCULATE
;
;       1. RAM BIT 00H --PRESS TIMESET KEY FLAG     1=PRESSED, 0=NOT
;      2. RAM 30H T0 INTERRUPT COUNTER
;              31H     CLOCK HORE  1 BIT
;             32H     CLOCK MIN  10 BIT
;             33H     CLOCK MIN   1 BIT
;      4. RAM:6FH      CLOCK HORE 10 BIT
;              6EH     CLOCK HORE  1 BIT
;             6DH     CLOCK MIN  10 BIT
;             6CH     CLOCK MIN   1 BIT
;--------------------------------------------------------------------
       MOV     A,30H                   ;HOUR DISPLAY FLASH
       CJNE    A,#10,TIMECA1                    ;
TIMECA1:JNC    TIMECAJ                          ;
TIMEOU1:LJMP   TIMEOUT                          ;

TIMECAJ:MOV    30H,#00H        ;SECONDE ADD 1
       INC     31H
       MOV     A,31H                   ;
       CJNE    A,#10,TIMECAF           ;
TIMECAF:JNC    TIMECAG                 ;
       LJMP    TIMEOUT         ;SECONDE ADD 1

TIMECAG:MOV    31H,#00         ;MINIUT 0X ADD 1
       INC     32H                     ;
       MOV     A,32H                   ;
TIMEFAS:CJNE   A,#10,TIMECA7           ;
TIMECA7:JNC    TIMECA8                 ;
       LJMP    TIMEOUT         ;MINIUTE 0X ADD 1

TIMECA8:MOV    32H,#0          ;MINIUTE XO ADD 1
       INC     33H                     ;
       MOV     A,33H                   ;
       CJNE    A,#10,TIMECA9           ;
TIMECA9:JNC    TIMECAA                 ;
       LJMP    TIMEOUT         ;MINIUTE X0 ADD 1

TIMECAA:MOV    33H,#0          ;HOUR 0X ADD 1
       INC     34H                     ;
       MOV     A,33H                   ;
       CJNE    A,#10,TIMECAB           ;
TIMECAB:JNC    TIMECAC                 ;
       LJMP    TIMEOUT         ;MINIUTE X0 ADD 1
TIMECAC:MOV    34H,#0          ;HOUR 0X ADD 1

TIMEOUT:NOP

       RETI
;====================================================================
       END















































⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -