PIC18Fxx2数据表
可以在此处获得与我正在使用的 7segs 相关的数据表
编辑(15/4/2013):下面的代码是 PORTD 的指令字
ldig SET b'00001000' ;for rght digit
rdig SET b'00000100' ;for left digit
首次执行代码时 TRISB、TRISD、PORTB 和 PORTD 的指令字
CLRF TRISB ;port B as output
CLRF TRISD ;port D as output
CLRF PORTD ;clear port D not to select any digit
SETF PORTB ;set port B to off all segments
我想使用组装在 2 个七段 LED 显示器上显示两个不同的数字。我正在尝试使用下面列出的代码,但它不起作用。注:rdig = 右面板,ldig = 左面板,disp1 代表 1,依此类推。
loop MOVFF disp1, PORTB
MOVLW rdig ;select only the left display
MOVWF PORTD ;unit to be on
MOVFF disp8, PORTB
MOVLW ldig ;select only the left display
MOVWF PORTD ;unit to be on
bra loop
输出应该是 81(在七段显示器上)没有出现任何数字。每个面板上只出现某种昏暗的灯光。但是,如果我试图在七段显示器的任一侧仅显示一个数字,则该代码有效。
loop MOVFF disp8, PORTB
MOVLW ldig ;select only the left display
MOVWF PORTD ;unit to be on
bra loop
编辑:我尝试使用TMR0N(b'00000000'指令字,tmrL = FF,tmrH = FB)为每个数字显示请求添加一个小延迟(2微秒),如下所示,右侧面板上仅显示数字1。
loop MOVFF disp1, PORTB
MOVLW rdig ;select only the left display
MOVWF PORTD ;unit to be on
call delay
MOVFF disp8, PORTB
MOVLW ldig ;select only the left display
MOVWF PORTD ;unit to be on
call delay
bra loop
TMR0N 的指令设置
initwrd SET 0x00
tmrH SET 0xFF
tmrL SET 0xFB