📄 4094.asm
字号:
list p=12c508a
#include <p12c508a.inc>
TEMP1 equ 0x14 ;Temp variables
TEMP2 equ 0x15
TEMP3 equ TEMP2+1
scrtch0 equ TEMP3+1
scrtch1 equ scrtch0+1
;DEFINE PORTS
;************
gp0 equ 0
gp1 equ 1
gp2 equ 2
gp3 equ 3
gp4 equ 4
gp5 equ 5
;DISPLAY PORT
;************
disp_data equ gp0
disp_clk equ gp1
disp_strobe equ gp2
#define data_hi bsf GPIO, disp_data
#define data_lo bcf GPIO, disp_data
#define clk_hi bsf GPIO, disp_clk
#define clk_lo bcf GPIO, disp_clk
#define strobe_hi bsf GPIO, disp_strobe
#define strobe_lo bcf GPIO, disp_strobe
init org 0x00 ;Effective Reset Vector
movlw 0
movwf TEMP3
movlw 0x00 ;all lo
movwf GPIO
movlw b'00011000' ;port g0-g2,g5 o/p & gp3,gp4 i/p
tris GPIO
clrf TMR0 ;clr tmr0 & prescaler
movlw b'11000011' ;tmr0 enable with 1:16 prescaler
option
main movlw TABLE
addwf TEMP3,w
call get_seg
movwf scrtch1
movlw 0x08 ;no of bit to tx
movwf scrtch0
yiwei rlf scrtch1, f ;check msb
btfsc STATUS, C ;data hi if cy=1 else lo
goto push_data
data_lo
goto push_nop
push_data data_hi
push_nop nop ;delay
nop
clk_hi ;toggle clk to push data
nop
nop
clk_lo
nop
nop
decfsz scrtch0, f ;next bit
goto yiwei
strobe_hi ;strobe data nop
nop
strobe_lo
data_lo ;leave data lo
incf TEMP3,f
DELAY nop
nop
movlw 0xff
nop
nop
movwf TEMP1
DELAY1 movlw 0xff ;TEMP1 = 26
nop
nop
movwf TEMP2 ;TEMP2 = 255
DELAY2 decfsz TEMP2, f
goto DELAY2
decfsz TEMP1, f
goto DELAY1
MOVLW .10 ;
xorwf TEMP3,W
btfss STATUS,Z ;
goto main
goto init
get_seg movwf 2
TABLE retlw b'11111100' ;0
retlw b'01100000' ;1
retlw b'11011010' ;2
retlw b'11110010' ;3
retlw b'01100110' ;4
retlw b'10110110' ;5
retlw b'10111110' ;6
retlw b'11100000' ;7
retlw b'11111110' ;8
retlw b'11110110' ;9
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -