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

📄 exp11.asm

📁 ADuc812的各种功能程序的例子!很有参考价值
💻 ASM
字号:

P0       DATA  080H  ;PORT 0	
SP       DATA  081H  ;STACK POINTER	
DPL      DATA  082H  ;DATA POINTER - LOW BYTE
DPH      DATA  083H  ;DATA POINTER - HIGH BYTE
DPP      DATA  084H  ;DATA POINTER - PAGE BYTE
PCON     DATA  087H  ;POWER CONTROL
TCON     DATA  088H  ;TIMER CONTROL
TMOD     DATA  089H  ;TIMER MODE
TL0      DATA  08AH  ;TIMER 0 - LOW BYTE
TL1      DATA  08BH  ;TIMER 1 - LOW BYTE
TH0      DATA  08CH  ;TIMER 0 - HIGH BYTE
TH1      DATA  08DH  ;TIMER 1 - HIGH BYTE
P1       DATA  090H  ;PORT 1
SCON     DATA  098H  ;SERIAL PORT CONTROL
SBUF     DATA  099H  ;SERIAL PORT BUFFER
I2CDAT   DATA  09AH  ;I2C DATA BUFFER
I2CADD   DATA  09BH  ;I2C ADDRESS
P2       DATA  0A0H  ;PORT 2
IE       DATA  0A8H  ;INTERRUPT ENABLE 1
IE2      DATA  0A9H  ;INTERRUPT ENABLE 2
P3       DATA  0B0H  ;PORT 3
IP       DATA  0B8H  ;INTERRUPT PRIORITY
ECON     DATA  0B9H  ;FLASH EEPROM CONTROL
ETIM1    DATA  0BAH
ETIM2    DATA  0BBH  ;FLASH EEPROM TIMING2
EDATA1   DATA  0BCH  ;FLASH EEPROM DATA1 
EDATA2   DATA  0BDH  ;FLASH EEPROM DATA2 
EDATA3   DATA  0BEH  ;FLASH EEPROM DATA3 
EDATA4   DATA  0BFH  ;FLASH EEPROM DATA4 
WDCON    DATA  0C0H  ;WATCHDOG TIMER CONTROL
ETIM3    DATA  0C4H  ;FLASH EEPROM TIMING3
EADRL    DATA  0C6H  ;FLASH EEPROM PAGE ADDRESS
T2CON    DATA  0C8H  ;TIMER 2 CONTROL
RCAP2L   DATA  0CAH  ;TIMER 2 CAPTURE REGISTER - LOW BYTE
RCAP2H   DATA  0CBH  ;TIMER 2 CAPTURE REGISTER - HIGH BYTE
TL2      DATA  0CCH  ;TIMER 2 - LOW BYTE
TH2      DATA  0CDH  ;TIMER 2 - HIGH BYTE
PSW      DATA  0D0H  ;PROGRAM STATUS WORD
DMAL     DATA  0D2H  ;DMA ADDRESS LOW BYTE
DMAH     DATA  0D3H  ;DMA ADDRESS HIGH BYTE
DMAP     DATA  0D4H  ;DMA ADDRESS PAGE BYTE
ADCCON2  DATA  0D8H  ;ADC CONTROL
ADCDATAL DATA  0D9H  ;ADC DATA LOW BYTE
ADCDATAH DATA  0DAH  ;ADC DATA HIGH BYTE
PSMCON   DATA  0DFH  ;POWER SUPPLY MONITOR
ACC      DATA  0E0H  ;ACCUMULATOR
I2CCON   DATA  0E8H  ;I2C CONTROL
ADCCON1  DATA  0EFH  ;ADC CONTROL
B        DATA  0F0H  ;MULTIPLICATION REGISTER
ADCOFSL  DATA  0F1H  ;ADC OFFSET LOW BYTE
ADCOFSH  DATA  0F2H  ;ADC OFFSET HIGH BYTE
ADCGAINL DATA  0F3H  ;ADC GAIN LOW BYTE
ADCGAINH DATA  0F4H  ;ADC GAIN HIGH BYTE
ADCCON3  DATA  0F5H  ;ADC CONTROL
SPIDAT   DATA  0F7H  ;SPI DATA REGISTER
SPICON   DATA  0F8H  ;SPI CONTROL REGISTER
DAC0L    DATA  0F9H  ;DAC0 LOW BYTE
DAC0H    DATA  0FAH  ;DAC0 HIGH BYTE
DAC1L    DATA  0FBH  ;DAC1 LOW BYTE
DAC1H    DATA  0FCH  ;DAC1 HIGH BYTE
DACCON   DATA  0FDH  ;DAC CONTROL REGISTER
IT0      BIT   088H  ;TCON.0 - EXT. INTERRUPT 0 TYPE
IE0      BIT   089H  ;TCON.1 - EXT. INTERRUPT 0 EDGE FLAG
IT1      BIT   08AH  ;TCON.2 - EXT. INTERRUPT 1 TYPE
IE1      BIT   08BH  ;TCON.3 - EXT. INTERRUPT 1 EDGE FLAG
TR0      BIT   08CH  ;TCON.4 - TIMER 0 ON/OFF CONTROL
TF0      BIT   08DH  ;TCON.5 - TIMER 0 OVERFLOW FLAG
TR1      BIT   08EH  ;TCON.6 - TIMER 1 ON/OFF CONTROL
TF1      BIT   08FH  ;TCON.7 - TIMER 1 OVERFLOW FLAG
T2       BIT   090H  ;P1.0 - TIMER 2 TRIGGER INPUT
T2EX     BIT   091H  ;P1.1 - TIMER 2 COUNT INPUT
RI       BIT   098H  ;SCON.0 - RECEIVE INTERRUPT FLAG
TI       BIT   099H  ;SCON.1 - TRANSMIT INTERRUPT FLAG
RB8      BIT   09AH  ;SCON.2 - RECEIVE BIT 8
TB8      BIT   09BH  ;SCON.3 - TRANSMIT BIT 8
REN      BIT   09CH  ;SCON.4 - RECEIVE ENABLE
SM2      BIT   09DH  ;SCON.5 - SERIAL MODE CONTROL BIT 2
SM1      BIT   09EH  ;SCON.6 - SERIAL MODE CONTROL BIT 1
SM0      BIT   09FH  ;SCON.7 - SERIAL MODE CONTROL BIT 0
EX0      BIT   0A8H  ;IE.0 - EXTERNAL INTERRUPT 0 ENABLE
ET0      BIT   0A9H  ;IE.1 - TIMER 0 INTERRUPT ENABLE
EX1      BIT   0AAH  ;IE.2 - EXTERNAL INTERRUPT 1 ENABLE
ET1      BIT   0ABH  ;IE.3 - TIMER 1 INTERRUPT ENABLE
ES       BIT   0ACH  ;IE.4 - SERIAL PORT INTERRUPT ENABLE
ET2      BIT   0ADH  ;IE.5 - TIMER 2 INTERRUPT ENABLE
EADC     BIT   0AEH  ;IE.6 - ENABLE ADC INTURRUPT
EA       BIT   0AFH  ;IE.7 - GLOBAL INTERRUPT ENABLE
RXD      BIT   0B0H  ;P3.0 - SERIAL PORT RECEIVE INPUT
TXD      BIT   0B1H  ;P3.1 - SERIAL PORT TRANSMIT OUTPUT
INT0     BIT   0B2H  ;P3.2 - EXTERNAL INTERRUPT 0 INPUT
INT1     BIT   0B3H  ;P3.3 - EXTERNAL INTERRUPT 1 INPUT
T0       BIT   0B4H  ;P3.4 - TIMER 0 COUNT INPUT
T1       BIT   0B5H  ;P3.5 - TIMER 1 COUNT INPUT
WR       BIT   0B6H  ;P3.6 - WRITE CONTROL FOR EXT. MEMORY
RD       BIT   0B7H  ;P3.7 - READ CONTROL FOR EXT. MEMORY
PX0      BIT   0B8H  ;IP.0 - EXTERNAL INTERRUPT 0 PRIORITY
PT0      BIT   0B9H  ;IP.1 - TIMER 0 PRIORITY
PX1      BIT   0BAH  ;IP.2 - EXTERNAL INTERRUPT 1 PRIORITY
PT1      BIT   0BBH  ;IP.3 - TIMER 1 PRIORITY
PS       BIT   0BCH  ;IP.4 - SERIAL PORT PRIORITY
PT2      BIT   0BDH  ;IP.5 - TIMER 2 PRIORITY
PADC     BIT   0BEH  ;IP.6 - ADC PRIORITY
PSI      BIT   0BFH  ;IP.7 - SPI OR 2-WIRE SERIAL INTERFACE PRIORITY
WDE      BIT   0C0H  ;WDCON.0 - WATCHDOG ENABLE
WDS      BIT   0C1H  ;WDCON.1 - WATCHDOG STATUS
WDR2     BIT   0C2H  ;WDCON.2 - WATCHDOG TIMER REFRESH BIT2
WDR1     BIT   0C3H  ;WDCON.3 - WATCHDOG TIMER REFRESH BIT1
PRE0     BIT   0C5H  ;WDCON.5 - WATCHDOG TIMEOUT SELECTION BIT0
PRE1     BIT   0C6H  ;WDCON.6 - WATCHDOG TIMEOUT SELECTION BIT1
PRE2     BIT   0C7H  ;WDCON.7 - WATCHDOG TIMEOUT SELECTION BIT2
CAP2     BIT   0C8H  ;T2CON.0 - CAPTURE OR RELOAD SELECT
CNT2     BIT   0C9H  ;T2CON.1 - TIMER OR COUNTER SELECT
TR2      BIT   0CAH  ;T2CON.2 - TIMER 2 ON/OFF CONTROL
EXEN2    BIT   0CBH  ;T2CON.3 - TIMER 2 EXTERNAL ENABLE FLAG
TCLK     BIT   0CCH  ;T2CON.4 - TRANSMIT CLOCK SELECT
RCLK     BIT   0CDH  ;T2CON.5 - RECEIVE CLOCK SELECTT
EXF2     BIT   0CEH  ;T2CON.6 - EXTERNAL TRANSITION FLAG
TF2      BIT   0CFH  ;T2CON.7 - TIMER 2 OVERFLOW FLAG
P        BIT   0D0H  ;PSW.0 - ACCUMULATOR PARITY FLAG
F1       BIT   0D1H  ;PSW.1 - FLAG 0
OV       BIT   0D2H  ;PSW.2 - OVERFLOW FLAG
RS0      BIT   0D3H  ;PSW.3 - REGISTER BANK SELECT 0
RS1      BIT   0D4H  ;PSW.4 - REGISTER BANK SELECT 1
F0       BIT   0D5H  ;PSW.5 - FLAG 0
AC       BIT   0D6H  ;PSW.6 - AUXILIARY CARRY FLAG
CY       BIT   0D7H  ;PSW.7 - CARRY FLAG
CS0      BIT   0D8H  ;ADCCON2.0 - ADC INPUT CHANNEL SELECT BIT0
CS1      BIT   0D9H  ;ADCCON2.1 - ADC INPUT CHANNEL SELECT BIT1
CS2      BIT   0DAH  ;ADCCON2.2 - ADC INPUT CHANNEL SELECT BIT2
CS3      BIT   0DBH  ;ADCCON2.3 - ADC INPUT CHANNEL SELECT BIT3
SCONV    BIT   0DCH  ;ADCCON2.4 - SINGLE CONVERSION ENABLE
CCONV    BIT   0DDH  ;ADCCON2.5 - CONTINUOUS CONVERSION ENABLE
DMA      BIT   0DEH  ;ADCCON2.6 - DMA MODE ENABLE
ADCI     BIT   0DFH  ;ADCCON2.7 - ADC INTURRUPT FLAG
I2CI     BIT   0E8H  ;I2CCON.0 - I2C INTURRUPT FLAG
I2CTX    BIT   0E9H  ;I2CCON.1 - I2C TRANSMIT SELECT
I2CRS    BIT   0EAH  ;I2CCON.2 - I2C RESET
I2CM     BIT   0EBH  ;I2CCON.3 - I2C MASTER MODE SELECT
MDI      BIT   0ECH  ;I2CCON.4 - I2C MASTER MODE SDATA INPUT
MCO      BIT   0EDH  ;I2CCON.5 - I2C MASTER MODE SCLOCK OUTPUT
MDE      BIT   0EEH  ;I2CCON.6 - I2C MASTER MODE SDATA ENABLE
MDO      BIT   0EFH  ;I2CCON.7 - I2C MASTER MODE SDATA OUTPUT
SPR0     BIT   0F8H  ;SPICON.0 - SPI BITRATE SELECT BIT0
SPR1     BIT   0F9H  ;SPICON.1 - SPI BITRATE SELECT BIT1
CPHA     BIT   0FAH  ;SPICON.2 - SPI CLOCK PHASE SELECT
CPOL     BIT   0FBH  ;SPICON.3 - SPI CLOCK POLARITY SELECT
SPIM     BIT   0FCH  ;SPICON.4 - SPI MASTER/SLAVE MODE SELECT
SPE      BIT   0FDH  ;SPICON.5 - SPI INTERFACE ENABLE
WCOL     BIT   0FEH  ;SPICON.6 - SPI WRITE COLLISION ERROR FLAG
ISPI     BIT   0FFH  ;SPICON.7 - SPI END OF TRANSFER FLAG



;从右至左循环移动"I LOVE YOU"

DISM0		EQU	30H
DISM1		EQU	31H
DISM2		EQU	32H
DISM3		EQU	33H
DISM4		EQU	34H
DISM5		EQU	35H
DISM6		EQU	36H
DISM7		EQU	37H
DISM8		EQU	38H
DISM9		EQU	39H
DISM10		EQU	3AH
DISM11		EQU	3BH
DISM12		EQU	3CH
DISM13		EQU	3DH
DISM14		EQU	3EH
DISM15		EQU	3FH

TEMP		EQU	40H

lcd_padr	equ     04h
lcd_wctradr	equ     0000h
lcd_rstaadr	equ     0002h
lcd_wdatadr	equ	0001h

	
	org 	0000h
	ljmp	main
	
	ORG	0100H
MAIN:	
	mov sp,#80h
	LCALL DELAY_300MS
	LCALL DISP_DATA_INI
	LCALL INIT

START:	
	mov a,#10000000B	;写入显示起始地址
	LCALL WRTC
	mov  a,dism0
	LCALL WRTD
	mov  a,dism1
	LCALL WRTD
	mov  a,dism2
	LCALL WRTD
	mov  a,dism3
	LCALL WRTD
	mov  a,dism4
	LCALL WRTD
	mov  a,dism5
	LCALL WRTD
	mov  a,dism6
	LCALL WRTD
	mov  a,dism7
	LCALL WRTD
	mov  a,dism8
	LCALL WRTD
	mov  a,dism9
	LCALL WRTD
	mov  a,dism10
	LCALL WRTD
	mov  a,dism11
	LCALL WRTD
	mov  a,dism12
	LCALL WRTD
	mov  a,dism13
	LCALL WRTD
	mov  a,dism14
	LCALL WRTD
	mov  a,dism15
	LCALL WRTD
;	LCALL	DELAY_300MS
;	LCALL	SHIFT_DATA
	LJMP	START
;	AJMP	$

INIT:	NOP
	NOP
	LCALL DELAY_20MS

	mov a,#00111000B	
  	mov dpp,#lcd_padr
	mov dptr,#lcd_wctradr
	movx @dptr,a
	LCALL DELAY_20MS

  	mov a,#00111000B	
  	mov dpp,#lcd_padr
	mov dptr,#lcd_wctradr
	movx @dptr,a
	LCALL DELAY_20MS

  	mov a,#00111000B	
  	mov dpp,#lcd_padr
	mov dptr,#lcd_wctradr
	movx @dptr,a
	LCALL DELAY_20MS

  	mov a,#00111000B	
  	LCALL WRTC
	mov a,#00111000B	;8位2行5x7点阵
	LCALL WRTC
	mov a,#00000001B	;清屏
  	LCALL WRTC
	mov a,#00000110B	;文字不动,光标自动右移
	LCALL WRTC
	mov a,#00001110B	;显示器开、光标开、闪烁关
	LCALL WRTC
	RET

WRTC:	LCALL busy
	mov dpp,#lcd_padr
	mov dptr,#lcd_wctradr
	movx @dptr,a
	LCALL DELAY_20MS
	RET
	
WRTD:	LCALL busy
	mov dpp,#lcd_padr
	mov dptr,#lcd_wdatadr
	movx @dptr,a
	LCALL DELAY_20MS
	RET

BUSY:	push    dpp
	push	dph
	push	dpl	
	push	acc
	mov dpp,#lcd_padr
	mov dptr,#lcd_rstaadr
loop:	MOVx a,@dptr
	LCALL DELAY_20MS
	JB  acc.7,loop
	pop acc
	pop dpl
	pop dph
	pop dpp
	RET
	
DELAY_300MS:
	MOV	R6,#250
	AJMP	DELAY_20MS1

DELAY_20MS:
	MOV	R6,#16
DELAY_20MS1:
	LCALL	DELAY_1MS
	DJNZ	R6,DELAY_20MS1
	RET
;
DELAY_1MS:
	MOV	R7,#250
DELAY_1MS1:
	NOP
	NOP
	DJNZ	R7,DELAY_1MS1
	RET

DISP_DATA_INI:
	MOV	DISM0,#01001001B	;I
	MOV	DISM1,#00100000B	;SPACE
	MOV	DISM2,#01001100B	;L
	MOV	DISM3,#01001111B	;O
	MOV	DISM4,#01010110B	;V
	MOV	DISM5,#01000101B	;E
	MOV	DISM6,#00100000B	;SPACE
	MOV	DISM7,#01011001B	;Y
	MOV	DISM8,#01001111B	;O
	MOV	DISM9,#01010101B	;U
	MOV	DISM10,#00100000B	;SPACE
	MOV	DISM11,#00100000B	;SPACE
	MOV	DISM12,#00100000B	;SPACE
	MOV	DISM13,#00100000B	;SPACE
	MOV	DISM14,#00100000B	;SPACE
	MOV	DISM15,#00100000B	;SPACE
	RET

SHIFT_DATA:
	MOV	TEMP,DISM0
	MOV	DISM0,DISM1
	MOV	DISM1,DISM2
	MOV	DISM2,DISM3
	MOV	DISM3,DISM4
	MOV	DISM4,DISM5
	MOV	DISM5,DISM6
	MOV	DISM6,DISM7
	MOV	DISM7,DISM8
	MOV	DISM8,DISM9
	MOV	DISM9,DISM10
	MOV	DISM10,DISM11
	MOV	DISM11,DISM12
	MOV	DISM12,DISM13
	MOV	DISM13,DISM14
	MOV	DISM14,DISM15
	MOV	DISM15,TEMP
	RET	
	
	END

⌨️ 快捷键说明

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