; before you proceed with the delay time, make sure you have modified reg9s12.h for TSCR2 #include C:\Users\ayomi\Desktop\dragon\3dlab\REG9S12.h org $2000 movb #$07,ddrb ; setting chs.0-2 as output pins loop movb #$01,portb ; green LED for 3 seconds (Ch.0) ldx #300 jsr delay movb #$02,portb ; yellow LED for 1 second (Ch.1) ldx #100 jsr delay movb #$04,portb ; red LED for 3 seconds (Ch.2) ldx #300 jsr delay bra loop ; branch back to label loop swi ; the following routine provides 10 ms delay delay movb #$90,TSCR1 ; enable TCNT and fast flags clear movb #$06,TSCR2 ; configure prescale factor to 64 movb #$01,TIOS ; enable OC0 ldd TCNT addd #3750 ; start OC operation std TC0 ; with 10ms time delay brclr TFLG1,$01,* ; if equal, C0F in TFLG1 is set to 1 dbne x,delay rts
Use the Assembly code below and a dragon 12 jr to create a traffic light take a screenshot of the dragon 12 running show connection slots and code
; before you proceed with the delay time, make sure you have modified reg9s12.h for TSCR2
#include C:\Users\ayomi\Desktop\dragon\3dlab\REG9S12.h
org $2000
movb #$07,ddrb ; setting chs.0-2 as output pins
loop movb #$01,portb ; green LED for 3 seconds (Ch.0)
ldx #300
jsr delay
movb #$02,portb ; yellow LED for 1 second (Ch.1)
ldx #100
jsr delay
movb #$04,portb ; red LED for 3 seconds (Ch.2)
ldx #300
jsr delay
bra loop ; branch back to label loop
swi
; the following routine provides 10 ms delay
delay movb #$90,TSCR1 ; enable TCNT and fast flags clear
movb #$06,TSCR2 ; configure prescale factor to 64
movb #$01,TIOS ; enable OC0
ldd TCNT
addd #3750 ; start OC operation
std TC0 ; with 10ms time delay
brclr TFLG1,$01,* ; if equal, C0F in TFLG1 is set to 1
dbne x,delay
rts
Trending now
This is a popular solution!
Step by step
Solved in 2 steps