Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote