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

📄 ch11_intr7.asm

📁 51单片机基础篇 对于有一定基础的人看看 包含书中所以的源代码
💻 ASM
字号:
     ;PROGRAM NAME:INTR7.ASM
     ;TEST SERIAL INTERRUPT
     ;
     COUNT   	EQU     9217    		;10ms FOR XTAL=11.0592MHz
     ;
     DIGIT1  	REG     P1.4
     DIGIT2  	REG     P1.5
     LED      	REG     P3.7
     ;
     DISP    	EQU     30H
     SEC     	EQU      31H
     I_CNT   	EQU     32H
     ;
     O_TRUE  	REG     20H.0
     ;
             	ORG     0000H
             	LJMP    RESET
             	ORG     0003H      	        ;INT0 INTERRUPT
             	RETI
             	ORG     000BH       	        ;TIMER0 INTERRUPT
             	LJMP    INT_TIMER0
             	ORG     0013H       	        ;INT1 INTERRUPT
             	RETI
             	ORG     001BH       	        ;TIMER1 INTERRUPT
             	RETI
             	ORG     0023H       	        ;SERIAL INTERRUPT
             	LJMP    SERIAL
     ;
     RESET   	MOV     R0,#00H
             	DJNZ    R0,$     		;WAIT
             	MOV     DISP,#00H   	        ;DISPLAY '0''0'
             	MOV     SEC,#00H
             	MOV     SP,#40H
     ;
             	MOV     A,#00100001B
             	MOV     TMOD,A
     ;TIMER0 	IN MODE 1:16-BIT COUNT
             	MOV     TH0,#(65536-COUNT)/256
             	MOV     TL0,#(65536-COUNT).MOD.256
             	CLR     TF0      		;CLEAR TF0
             	SETB    TR0
     ;
     ;TIMER1 	IN MODE 2:8-BIT AUTO RELOAD MODE
             	MOV     TH1,#FDH
             	SETB    TR1     		;TIMER1 START
     ;
             	MOV     SCON,#01000000B
             	SETB    REN     		;RECEIVE ENABLE
     ;
     ;TIMER0 SETTING
             	SETB    PT0
             	SETB    ET0     		;ENABLE TIMER0 INTURRUPT
     ;
             	CLR     RI
             	CLR     TI
             	SETB    ES      		;ENABLE SERIAL INTERRUPT
     ;
             	SETB    EA      		;ENABLE SYSTEM INTERRUPT
     ;
     LOOP    	LCALL   LDELAY
             	LCALL   LDELAY
             	SJMP    LOOP    		;WAITTING
     ;
     ;
     SERIAL 	JNB     RI,NO_DATA
             	CLR     RI
             	MOV     A,SBUF
             	CJNE    A,#100,$NEXT
     $NEXT   	JNC     NO_DATA
             	MOV     DISP,A  		;DISPLAY A NEW VALUE
     NO_DATA RETI
     ;
     ;TF0=1
     INT_TIMER0
             	CLR     TF0     		;CLEAR TF0
             	MOV     TH0,#(65536-COUNT)/256
             	MOV     TL0,#(65536-COUNT).MOD.256
             	INC     SEC          	        ;SEC=SEC+1
             	MOV     A,SEC       	        ;CHECK SEC>=100?
             	CJNE    A,#100,$CHK1	        ;A-100
     $CHK1  	JC      $NEXT
             	MOV     SEC,#00H   	        ;SEC=0
     ;
     $NEXT   	MOV     A,SEC
              	CJNE    A,#40,$CHK2
     $CHK2   	JNC     OVER
              	SETB    LED         	        ;LED ON
              	SJMP    DISPLAY
     OVER    	CLR     LED
     ;
     DISPLAY 	MOV     A,DISP
              	ANL     A,#00001111B	        ;GET LOW NIBBLES
              	SETB    ACC.5       	        ;BIT5,BIT4=10
              	MOV     P1,A
              	ACALL   DELAY
     ;ADD EXTRA PART
              	CLR     P1.4
              	CLR     P1.5
              	ACALL   DELAY
     ;
             	MOV     A,DISP
             	SWAP    A
             	ANL     A,#00001111B
             	SETB    ACC.4       	        ;BIT5,BIT4=01
             	MOV     P1,A
             	ACALL   DELAY
             	CLR     P1.4
             	CLR     P1.5
             	RETI
     ;
     DELAY  	MOV     R7,#80H
             	DJNZ    R7,$
             	RET
     ;
     LDELAY 	MOV     R1,#00H
     $R0     	MOV     R0,#00H
              	DJNZ    R0,$
              	DJNZ    R1,$R0
              	RET

⌨️ 快捷键说明

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