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

📄 main.asm

📁 富晶的MCU仿真器软件
💻 ASM
字号:
;***********************************************************************************/  
;*		                   TEMPERATURE example			            		*/
;*	Authur : Roy Yen							  		*/
;*	Version		description			time		 editor 			*/
;*	   0.1		DRAFT				2005/06/02	Roy Yen		*/
;*	   0.2		DRAFT2			2005/06/02	Roy Yen		*/
;***********************************************************************************/

	INCLUDE	FS9821.INC
	INCLUDE	macro_FS9821.asm
	INCLUDE	Def_Mem_FS9821.asm
	
	CBUF		EQU	0D0H				; COUNTER

;*****************************************************************************************************************
	ORG    		00
	GOTO  		MAIN					; START FROM CLOCK INITIAL
	ORG    		04H
	GOTO	 	JUDGE					; JUDGE THE INTERRUPT IS EXTERNAL OR ADC	
	
;*****************************************************************************************************************
MAIN:	
	CALL		CLKINI
	CALL		POWERINI
	CALL		LCDINI
	CALL		CLRLCD
	CALL		TESTLCD	
    ;----------------------------------------------------------------------------------------------------------------------------------------------
;	CALL		REGINI
;	CALL		CLKINI
;	CALL		POWERINI
;	CALL		EXTTRIGGER1
;	CALL		EXTTRIGGER2
;	CALL		INTERRUPT_START
    ;----------------------------------------------------------------------------------------------------------------------------------------------

NULL:
	NOP							; MAIN FUNCTION IS DO NOTHING
	GOTO		NULL
;********************************************************************************************************************
USER_FUNCTION:
CLRLCD:
	CLRF		LCD1
	CLRF		LCD2
	CLRF		LCD3
	CLRF		LCD4
	CLRF		LCD5
	CLRF		LCD6
	RETURN
	
FULLLCD:
	MOVLW	0FFH
	MOVWF	LCD1
	MOVWF	LCD2
	MOVWF	LCD3
	MOVWF	LCD4
	MOVWF	LCD5
	MOVWF	LCD6
	RETURN
	
TESTLCD:
	MOVLW	00000001B
	MOVWF	LCD6
	MOVLW	00000010B
	MOVWF	LCD6
	MOVLW	00000100B
	MOVWF	LCD6
	MOVLW	00001000B
	MOVWF	LCD6
	MOVLW	00010000B
	MOVWF	LCD6
	MOVLW	00100000B
	MOVWF	LCD6
	MOVLW	01000000B
	MOVWF	LCD6
	MOVLW	10000000B
	MOVWF	LCD6
	MOVLW	01111010B
	MOVWF	LCD6
	MOVLW	00111110B
	MOVWF	LCD5
	MOVLW	01100000B
	MOVWF	LCD4
	RETURN

;********************************************************************************************************************
INTERRUPT:
JUDGE:
	BTFSC		INTF, 0					; SEE EXTERNAL INTERRUPT1 FLAG
	GOTO		EXTINT1				; DO THE EXT. INTERRUPT 1 FUNCTION
	BTFSC		INTF, 1					; SEE EXTERNAL INTERRUPT2 FLAG
	GOTO		EXTINT2				; DO THE EXT. INTERRUPT 2 FUNCTION
	BTFSC		INTF, 2					; SEE ADC INTERRUPT FLAG
	GOTO		ADCISR				; DO THE ADC FUNCTION
	BTFSC		INTF, 4					; SEE ADC INTERRUPT FLAG
	GOTO		TIMERISR				; DO THE TIMER FUNCTION
	RETFIE							; ERROR INTERRUPT, FINISH THE INTERRUPT

EXTINT1:
	BCF		INTF, 0					; CLEAR THE EXTERNAL INTERRUPT1 FLAG
	INCF		CBUF, 1				; CBUF++
	MOVFW	CBUF					; AL = CBUF
	MOVWF	AL					;
	MOVLW	00H					; AH = 00
	MOVWF	AH					; 
	CALL		SHOWLCD				;	
	RETFIE							; FINISH THE INTERRUPT

EXTINT2:
	BCF		INTF, 1					; CLEAR THE EXTERNAL INTERRUPT2 FLAG	
	RETFIE

ADCISR:
	BCF		INTF, 2					; CLEAR THE ADC INTERRUPT FLAG
	RETFIE
	
TIMERISR:
	BCF		INTF, 4					; CLEAR THE TIMER INTERRUPT FLAG
	RETFIE
		
;****************************************************************************************************************
INITIAL:
REGINI:
	CLRF		LED1Temp
	CLRF		LED2Temp
	CLRF		LED3Temp
	CLRF		LED4Temp
	CLRF		LED5Temp
	CLRF		LED6Temp
	CLRF		CBUF	
	RETURN

CLKINI:
	MOVLW   	46H					; ENABLE CHARGE PUMP AND CHOPPER MODE
	MOVWF   	PCK					; SET PCK REGISTER FLAG
	RETURN	 
  
POWERINI:
	BSF		NETF, 5				; ENABLE VDDA
	NOP
	Delay		70h					; DELAY 70MS TO WAIT THE VDDA BE STABLE	
	BSF		NETF, 0				; ENABLE VB
	NOP
	BSF		NETF, 1				; ENABLE AGND
	NOP
	BSF		NETF, 6				; ENABLE BANDGAP VOLTAGE
	RETURN

EXTTRIGGER1:
	BSF		PT2PU, 0				; EXTERNAL 1 PULL UP RESISTOR
	BCF		PT2EN, 0				; ASSIGN PT2 AS AN INPUT PORT
	BCF		INTF, 0					; CLEAR EXTERNAL1 INTERRUPT FLAG
	BSF		INTE, 0					; ENABLE THE EXTERNAL1 INTERRUPT 
	RETURN

EXTTRIGGER2:
	BSF		PT2PU, 1				; EXTERNAL 2 PULL UP RESISTOR
	BCF		PT2EN, 1				; ASSIGN PT2 AS AN INPUT PORT
	BCF		INTF, 1					; CLEAR EXTERNAL2 INTERRUPT FLAG
	BSF		INTE, 1					; ENABLE THE EXTERNAL2 INTERRUPT
	RETURN

LCDINI:
	movlw  		27h					; Set LCD Driver
	movwf  	LCDENR
	RETURN
	
ADCINI:
	MOVLW	0FH					; SET ADC OUTPUT RATE TO 8000
	MOVWF	ADCON	
	movlw		2Ch					; SINL[1:0]=00, SINH[2:0]=101, SFTA[2:0]=100
	movwf		NETA
	movlw		02h					; SOP1N[1:0]=00, SVRL[1:0]=00, SVRH[1:0]=10
	movwf		NETB
	movlw		86h					; SREFO=1, ADG[1:0]=01, ADEN=1, AZ=0
	movwf		NETC	
	movlw		00h					; OP1EN=0, SOP1P[2:0]=000
	movwf		NETD	
	Delay		70h					; DELAY 70MS TO WAIT THE ADC BE STABLE
	BSF		INTE, 2					; ENABLE THE ADC INTERRUPT
	RETURN

INTERRUPT_START:
	BSF		INTE, 7 				; ENABLE THE GIE
	RETURN
	
;********************************************************************************************************************
INCLUDE        LCDINDX.ASM
INCLUDE        LIB9821.asm

end

⌨️ 快捷键说明

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