📄 main.asm
字号:
;/**********************************************************************************/
;* Push Button&LCD example for FS982x. */
;* PT2[0]& PT2[1] is Input. */
;* Function Arthurs Time Version Description */
;* Total Gavannis.hsu 2004/02/05 0.1 Use PB4 one time then LCD will add one */
;* */
;* Description:every four time is one cycle. e.g.:<0,1,2,3,4>.<0,1,2,3,4>.<0,1,2,3,4>.<0,1,2,3,4>... */
;/**********************************************************************************/
INCLUDE FS9821.INC
DisplayFlag equ 80h
DelayLoop1 equ 81h
Delayloop2 equ 82h
ORG 00
GOTO BTNINI
ORG 04H
BTFSS INTF,0
BTFSS INTF,1
GOTO BTNISR0
GOTO BTNISR1
BTNINI:
MOVLW 00111100b
MOVWF PT2
MOVLW 00000011B
MOVWF PT2PU
MOVLW 10000011b
MOVWF INTE
ValINI:
MOVLW 00H
MOVWF DisplayFlag
MOVWF LCD1
MOVWF LCD2
MOVWF LCD3
MOVWF LCD4
MOVWF LCD5
Call lcd_num
MOVWF LCD6
MOVLW 27h; ;Set LCD Driver
MOVWF LCDENR
MAIN:
NOP
GOTO MAIN
BTNISR0:
MOVLW 00000000b ;Clear INTF
MOVWF INTF
MOVFW DisplayFlag ;Chose Display number
CALL Switch
MOVLW 27h ; LCD Open
MOVWF LCDENR
INCF DisplayFlag,F ;add one
CALL Delay ;Check mis-error
RETFIE
BTNISR1:
MOVLW 00000000b ;Clear INTF
MOVWF INTF
NOP
RETFIE
;===========================================
; <Switch Case Function>
; Case0:Display '0'
; Case1:Display '1'
; Case2:Display '2'
; Case3:Display '3'
; Default:Display '0',Set DisplayFlag=0xFF
;=============================================
ORG 090h
Switch:
addpcw
GOTO CASE0
GOTO CASE1
GOTO CASE2
GOTO CASE3
GOTO Default
CASE0:
MOVLW 001H
Call lcd_num
MOVWF LCD6
RETURN
CASE1:
MOVLW 002H
Call lcd_num
MOVWF LCD6
RETURN
CASE2:
MOVLW 003H
Call lcd_num
MOVWF LCD6
RETURN
CASE3:
MOVLW 004H
Call lcd_num
MOVWF LCD6
RETURN
Default:
MOVLW 000H
Call lcd_num
MOVWF LCD6
MOVLW 0FFH ;Initial value
MOVWF DisplayFlag
RETURN
;===========================================
; <Delay Loop Function>
; Loop = [1+1+(Delay loop-1)*(1+2)+1*2+2]*MCK
; =0.5 ms
; This example MCK=ICK/6.5 =0.153 (MHZ) =6.53(us)
;=============================================
Delay:
MOVLW 0C8H ;=200*0.5ms
MOVWF DelayLoop1
LOOP1:
MOVLW 0FFH ;*1
MOVWF DelayLoop2 ;*1
LOOP2:
DECFSZ DelayLoop2,F ;*1 or*2
GOTO LOOP2 ;*2
DECFSZ DelayLoop1,F
GOTO LOOP1
RETURN
INCLUDE LCDINDX.ASM
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -