📄 main.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 + -