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

📄 ch14_b11-5.asm

📁 51单片机基础篇 对于有一定基础的人看看 包含书中所以的源代码
💻 ASM
字号:
     ;PROGRAM NAME B11-5.ASM
     MS10    	EQU  	 9217    		  ;APPROXIMATELY 10ms INTERRUPR
     INTR_CNT   EQU  	 30H    		  ;CNT STORIAGE
     BUFFER	EQU  	 31H    		  ;DISPLAY BUFFER
     BINARY	EQU  	 32H    		  ;BINARY DATA STORIAGE
     ;
     SCOPE 	REG  	 P3.3   		  ;CHECK BY SCOPE
     BUZZER	REG  	 P3.4
     LED   	REG 	 P3.7
     ;
           	ORG 	 0000H
           	JMP 	 START
           	ORG 	 0003H   		  ;[DISABLE]  EXTERNAL INT0 INTERRUPT
           	RETI
           	ORG 	 000BH   		  ;[ENABLE]  TIMER0 OVERFLOW INTERRUPT
           	JMP 	 T0_ISR
     ;
           	ORG  	 0013H
           	RETI            		  ;[DISABLE] EXTERNAL INT1 INTERRUPT
           	ORG  	 001BH
           	RETI            		  ;[DISABLE] TIMER1 OVERFLOW INTERRUPT
           	ORG   	 0023H
           	RETI            		  ;[DISABLE] SERIAL INTERRUPT
     ;
           	ORG  	 30H
     START 	MOV  	 R0,#00H
            	DJNZ	 R0,$   		  ;DELAY A WHILE
           	MOV  	 SP,#60H
           	MOV  	 P1,#FFH
           	MOV 	 P3,#FFH
           	MOV  	 INTR_CNT,#00H
           	CLR  	 BUZZER 		  ;P3.4=0,BUZZER OFF
           	CLR  	 LED     		  ;P3.7=0,LED OFF
           	CALL 	 SET_TMR0
           	MOV  	 BINARY,#00H 	          ;BINARY DATA FOR DISPLAY
     ;
     $LOOP  	MOV      A,BINARY
            	ADD      A,#01H
             	MOV      BINARY,A
             	CJNE     A,#100,$S100	          ;IF A>=100 THEN A=0
             	MOV      BINARY,#00H 	          ;CLEAR BINARY DATA
     ;
     $S100 	ACALL    CONV    		  ;CONVERT BINARY TO BCD
     ;
             	ACALL    DELAY
             	ACALL    DELAY
             	ACALL  	 DELAY
             	SJMP     $LOOP
     ;
     CONV   	MOV    	 A,BINARY
             	MOV      B,#10
             	DIV      AB      		  ;A=A/10,B=A MOD 10
             	ANL      A,#0FH  		  ;A=A AND 0FH
             	JNZ      $1
             	MOV      A,#0FH  		  ;IF A=00H THEN A=0FH LEADING BLANK
     $1     	SWAP   	 A
             	ORL    	 A,B     		  ;A AS BCD FORM
             	MOV    	 BUFFER,A		  ;SAVE AT BUFFER
             	RET
     ;
     DELAY  	MOV      R7,#00H
     $1      	MOV      R6,#00H
             	DJNZ     R6,$
             	DJNZ     R7,$1
             	RET
     ;
     T0_ISR  SETB    	 SCOPE
             	MOV      TH0,#(65536-MS10)/256   ;RELOAD TH0
             	MOV      TL0,#(65536-MS10).MOD. 256
             	PUSH     A
             	PUSH     PSW
     ;
             	MOV      A,BUFFER
             	ANL      A,#0FH  		 ;GET LOW NIBBLE
             	SETB     ACC.5   		 ;BIT5=1
             	MOV      P1,A    		 ;SHOW 1 DIGIT
             	MOV      R0,#30H
             	DJNZ     R0,$    		 ;DELAY
     ;inter-blanking
             	CLR      ACC.4
             	CLR      ACC.5
             	MOV      P1,A    		 ;ALL DIGIT BLANK
             	MOV      R0,#04H
             	DJNZ     R0,$    		 ;DELAY
     ;
             	MOV      A,BUFFER
             	ANL      A,#F0H  		 ;GET HIGH NIBBLE
             	SWAP  	 A       		 ;SWAP A
             	SETB  	 ACC.4   		 ;BIT4=1
             	MOV   	 P1,A    		 ;SHOW ANOTHER DIGIT
             	MOV   	 R0,#30H
             	DJNZ   	 R0,$    		 ;DELAY
     ;
             	CLR    	 ACC.4
             	CLR      ACC.5
             	MOV      P1,A    		 ;ALL DIGIT BLANK
     ;
     ;INTR_CNT+1
             	INC      INTR_CNT
             	MOV      A,INTR_CNT
             	CJNE     A,#100,$T0_END
             	MOV      NTR_CNT,#00H
     $T0_END POP     	 PSW
             	POP      A
             	CLR      SCOPE
             	RETI
     ;
     SET_TMR0
             	MOV   	 A,#01H    	         ;TIMER MODE 1
             	MOV   	 TMOD,A
             	MOV   	 TH0,#(65536-MS10)/256   ;RELOAD TH0
             	MOV   	 TL0,#(65536-MS10).MOD.256
             	CLR   	 TF0     		 ;CLEAR TIMER0 FLAG
             	SETB  	 TR0     		 ;TIMER0 START COUNT
             	SETB  	 ET0     		 ;ENABLE TIMER0 INTERRUPT
             	SETB  	 EA      		 ;ENABLE SYSTEM INTERRUPT
             	RET
     ;

⌨️ 快捷键说明

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