当前位置:文档之家› 八个数码管显示

八个数码管显示

stm8/

#include "mapping.inc"
#include "stm8s105c6.inc"
#include "user_register.inc"
segment 'rom'

main.l
; initialize SP
ldw X,#stack_end
ldw SP,X

#ifdef RAM0
; clear RAM0
ram0_start.b EQU $ram0_segment_start
ram0_end.b EQU $ram0_segment_end
ldw X,#ram0_start
clear_ram0.l
clr (X)
incw X
cpw X,#ram0_end
jrule clear_ram0
#endif

#ifdef RAM1
; clear RAM1
ram1_start.w EQU $ram1_segment_start
ram1_end.w EQU $ram1_segment_end
ldw X,#ram1_start
clear_ram1.l
clr (X)
incw X
cpw X,#ram1_end
jrule clear_ram1
#endif

; clear stack
stack_start.w EQU $stack_segment_start
stack_end.w EQU $stack_segment_end
ldw X,#stack_start
clear_stack.l
clr (X)
incw X
cpw X,#stack_end
jrule clear_stack
intel
MOV PD_DDR,#0FFH ;定义为输出
MOV PD_CR1,#0FFH ;推挽
MOV PD_CR2,#0H ;低速

MOV PB_DDR,#0FFH ;同上
MOV PB_CR1,#0FFH
MOV PB_CR2,#0H

MOV R00,#0H
MOV R01,#0H
MOV R02,#0H
MOV R03,#10
MOV R04,#0H
MOV R05,#0H
MOV R06,#0H
MOV R07,#0H

;计数器的初始化
MOV TIM2_PSCR,#01H ;初始化预分频器TIM2_PSCR
MOV TIM2_ARRH,#{HIGH 1000} ;初始化自动重装初值寄存器TIM2_ARR
MOV TIM2_ARRL,#{LOW 1000}
MOV TIM2_CR1,#04H ;初始化控制寄存器TIM2_CR1,定义为向上计?数 ? 允许更新、允许溢出时中断
BSET TIM2_IER,#0 ;初始化中断使能寄存器,允许更新中断
BSET TIM2_CR1,#0 ;启动定时器

RIM
MAIN_LOOP.L
JRA MAIN_LOOP

interrupt TIM2_Interrupt_Over
TIM2_Interrupt_Over.l
BRES TIM2_SR1,#0
INC R00 ;显示指针加1
LD A,R00
CP A,#08
JRC LED_DISP_NEXT1 ;指针不小于2,从0开始
CLR R00
LED_DISP_NEXT1.L

LD A,R00 ;取显示指针
JRNE LED_DISP_NEXT2
MOV PB_ODR,#11111110B ;除b0位外,其他非显示位扫描信号为1
DEC R03
JRNE TIM2_EXIT
MOV R03,#10
;第一个数码管显示0到9
INC R01
LD A,R01
CP A,#10
JRC NEXT2
CLR R01
INC R02
NEXT2.L
LD A,R01
CLRW X
LD XL,A
LD A,(DISPTAB,X)
LD PD_ODR,A
;第一个数码管显示0到9
TIM2_EXIT.L
LD A,R01
CLRW X
LD XL,A
LD A,(DISPTAB,X)
LD PD_ODR,A
IRET
IRET
IRET
IRET
IRET
LED_DISP_NEXT2.L
CP A,#1
JRNE LED_DISP_ENXT3
MOV PB_ODR,#11111101B ;除b1位外,其他非显示位扫描信号为1
;第二个数码管显示0到9
LD A,R02
CP A,#10
JRC NEXT3
CLR R02
INC R04
NEXT3.L
LD A,R02
CLRW X
LD XL,A
LD A,(DISPTAB,X)
LD PD_ODR,A
IRET
IRET
IRET
IRET
IRET
;第三个数码管显示0到9
LED_DISP_ENXT3.L
CP A,#2
JRNE LED_DISP_ENXT4
MOV PB_ODR,#11111011B ;除b2位外,其他非显示位扫描信号为1
LD A,R04
CP A,#10
JRC NEXT4
CLR R04
INC R05
NEXT4.L
LD A,R04
CLRW X
LD XL,A
LD A,(DISPTAB,X)
LD PD_ODR,A
IRET
IRET
IRET
IRET
IRET
;第四个数码管显示0到9
LED_DISP_ENXT4.L
CP A,#3
JRNE LED_DISP_ENXT5
MOV PB_ODR,#11110111B ;除b3位外,其他非显示位扫描

信号为1
LD A,R05
CP A,#10
JRC NEXT5
CLR R05
INC R06
NEXT5.L
LD A,R05
CLRW X
LD XL,A
LD A,(DISPTAB,X)
LD PD_ODR,A
IRET
IRET
IRET
IRET
IRET
;第五个数码管显示0到9
LED_DISP_ENXT5.L
CP A,#4
JRNE LED_DISP_ENXT6
MOV PB_ODR,#11101111B ;除b4位外,其他非显示位扫描信号为1
LD A,R06
CP A,#10
JRC NEXT6
CLR R06
INC R07
NEXT6.L
LD A,R06
CLRW X
LD XL,A
LD A,(DISPTAB,X)
LD PD_ODR,A
IRET
IRET
IRET
IRET
IRET
;第六个数码管显示0到9
LED_DISP_ENXT6.L
CP A,#5
JRNE LED_DISP_ENXT7
MOV PB_ODR,#11011111B ;除b5位外,其他非显示位扫描信号为1
LD A,R07
CP A,#10
JRC NEXT7
CLR R07
INC R08
NEXT7.L
LD A,R07
CLRW X
LD XL,A
LD A,(DISPTAB,X)
LD PD_ODR,A
IRET
IRET
IRET
IRET
IRET
;第七个数码管显示0到9
LED_DISP_ENXT7.L
CP A,#6
JRNE LED_DISP_ENXT8
MOV PB_ODR,#10111111B ;除b6位外,其他非显示位扫描信号为1
LD A,R08
CP A,#10
JRC NEXT8
CLR R08
INC R09
NEXT8.L
LD A,R08
CLRW X
LD XL,A
LD A,(DISPTAB,X)
LD PD_ODR,A
IRET
IRET
IRET
IRET
IRET
;第八个数码管显示0到9
LED_DISP_ENXT8.L

MOV PB_ODR,#01111111B ;除b7位外,其他非显示位扫描信号为1
LD A,R09
CP A,#10
JRC NEXT9
CLR R09
NEXT9.L
LD A,R09
CLRW X
LD XL,A
LD A,(DISPTAB,X)
LD PD_ODR,A
IRET
IRET
IRET
IRET
IRET
DISPTAB:
DC.B 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
interrupt NonHandledInterrupt
NonHandledInterrupt.l
iret

motorola
segment 'vectit'
dc.l {$82000000+main} ; reset
dc.l {$82000000+NonHandledInterrupt} ; trap
dc.l {$82000000+NonHandledInterrupt} ; irq0
dc.l {$82000000+NonHandledInterrupt} ; irq1
dc.l {$82000000+NonHandledInterrupt} ; irq2
dc.l {$82000000+NonHandledInterrupt} ; irq3
dc.l {$82000000+NonHandledInterrupt} ; irq4
dc.l {$82000000+NonHandledInterrupt} ; irq5
dc.l {$82000000+NonHandledInterrupt} ; irq6
dc.l {$82000000+NonHandledInterrupt} ; irq7
dc.l {$82000000+NonHandledInterrupt} ; irq8
dc.l {$82000000+NonHandledInterrupt} ; irq9
dc.l {$82000000+NonHandledInterrupt} ; irq10
dc.l {$82000000+NonHandledInterrupt } ; irq11
dc.l {$82000000+NonHandledInterrupt} ; irq12
dc.l {$82000000+TIM2_Interrupt_Over} ; irq13
dc.l {$82000000+NonHandledInterrupt} ; irq14
dc.l {$82000000+NonHandledInterrupt} ; irq15
dc.l {$82000000+NonHandledInterrupt} ; irq16
dc.l {$82000000+NonHandledInterrupt} ; irq17
dc.l {$82000000+NonHandledInterrupt} ; irq18
dc.l {$82000000+NonHandledInterrupt} ; irq19
dc.l {$82000000+NonHandledInterrupt} ; irq20
dc.l {$82000000+NonHandledInterrupt} ; irq21
dc.l {$82000000+NonHandledInterrupt} ; irq22
dc.l {$82000000+NonHandledInterrupt} ; irq23
dc.l {$82000000+NonHandledInterrupt} ; irq24
dc.l {$82000000+NonHandledInterrupt} ; irq25
dc.l {$82000000+NonHandledInterrupt} ; irq26
dc.l {$82000000+NonHandledInterrupt} ; irq27
dc.l {$82000000+NonHandledInterrupt} ; i

rq28
dc.l {$82000000+NonHandledInterrupt} ; irq29

end

相关主题
文本预览
相关文档 最新文档