Having trouble with an automatic traffic light program. Red LED and Yellow LED w
ID: 3581303 • Letter: H
Question
Having trouble with an automatic traffic light program. Red LED and Yellow LED won't show. We are using a Dragon12 Plus 2 board, Code is below
#include C:UsersschwarzenbarDesktophcs12.inc
RED: EQU $10 ;PP4
GREEN: EQU $40 ;PP6
org $2000
movb #$FF, DDRP
bset PTP, #RED
bset DDRT,%00110000 ;PT4=Output for for IR Transmiter (IRTX)
bclr DDRT,%00001000 ;PT3=Input pin for IR receiver (IRRX)
bclr PTT,%00001000 ;PT4=0 to turn on IR Trans (IRTX)
Sensor brclr PTT,%00001000,Car ;Detect car, go to yes. If not execute istruction below
bset PTP, #RED ;Red light ON
bra Sensor ;Repeat till yes
Car bclr PTP,#RED ;Red light OFF
ldy #500
jsr delayby1ms ;delay 0.5 second
bset PTP,#RED ;Red light ON
ldy #500
jsr delayby1ms ;delay 0.5 second
bclr PTP,#RED ;Red light OFF
ldy #500
jsr delayby1ms ;delay 0.5 second
bset PTP,#RED ;Red light ON
ldy #500
jsr delayby1ms ;delay 0.5 second
bclr PTP,#RED ;Red light OFF
bset PTP,#GREEN ;Green light ON
ldaa #1
movb #$FF,DDRB ;Configure Port B pins as output
movb #$F7,DDRP ;Configure Port P pins (PP7,PP6,PP5,PP4,PP2,PP1 and PP0) as output
ldx #disp1
seg movb 1,x+,ptb
movb 1,x+,ptp
ldy #10
jsr delayby100ms
cpx #disp1+8
bne seg
ldx #disp2
seg2 movb 1,x+,ptb
movb 1,x+,ptp
ldy #500
jsr delayby1ms
cpx #disp2+20
bne seg2
lbra Sensor ;End program. Using long loop. Go to the loop label
#include C:UsersschwarzenbarDesktopdelay.asm
disp1 dc.b $67,$47
dc.b $7F,$47
dc.b $07,$47
dc.b $7D,$47
disp2 dc.b $6D,$67
dc.b $6D,$07
dc.b $66,$67
dc.b $66,$07
dc.b $4F,$67
dc.b $4F,$07
dc.b $5B,$67
dc.b $5B,$07
dc.b $06,$67
dc.b $3F,$27
end
Explanation / Answer
Try this...
#include "C:UsersAlekhyaDesktophcs12.inc"
org $2000
movb #$FF, DDRP
bset PTP, $20
bset DDRB, 000011
bset DDRT, 010000
bclr DDRT, 001000
bclr PTT, 010000
loop brclr PTT, 001000,yes ;Detect car, go to yes. If not execute
; istruction below
bset PTP, $20 ;
bra loop;
yes bclr PTP, $20 ;
ldy #500
jsr delayby1ms ; delay
bset PTP, $20 ;Red ON
ldy #500
jsr delayby1ms ;delay again
bclr PTP, $20 ;Red OFF
ldy #500
jsr delayby1ms ;delay 0.5
bset PTP, $20 ;Red ON
ldy #500
jsr delayby1ms ;delay
bclr PTP, $20 ;Red OFF
ldy #500
jsr delayby1ms ;delay
bset PTP, $20 ;Red ON
ldy #500
jsr delayby1ms ;delay
bclr PTP, $20 ;Red OFF
bset PTP, $40 ;Green ON
ldaa #1
movb #$FF, DDRB ;Configure Port B pins as output
movb #$F7, DDRP ;Configure Port P pins (PP7,PP6,PP5,
;PP4,PP2,PP1 and PP0) as output
ldx #disp1
seg movb 1,x+,ptb
movb 1,x+,ptp
ldy #10
jsr delayby100ms
cpx #disp1+8
bne seg
ldx #disp2
seg2 movb 1, x+,ptb
movb 1, x+,ptp
ldy #500
jsr delayby1ms
cpx #disp2+20
bne seg2
lbra loop ;
disp1 dc.b $67, $47
dc.b $7F, $47
dc.b $07, $47
dc.b $7D, $47
bne seg2
disp2 dc.b $6D,$67
dc.b $6D,$07
dc.b $66,$67
dc.b $66,$07
dc.b $4F,$67
dc.b $4F,$07
dc.b $5B,$67
dc.b $5B,$07
dc.b $06,$67
dc.b $3F,$27
end
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.