Você está na página 1de 9

#include "C:\miniide\hcs12.

inc"

org $2000 ; starting address at $2000

lcd_dat equ PORTK ; LCD data pins (PK5~PK2)

lcd_dir equ DDRK ; LCD data direction port

lcd_E equ $02 ; E signal pin

lcd_RS equ $01 ; RS signal pin

movb #$00, DDRH ; configure input at port H

movb #$FF, DDRB ; configure output at port B

movb #$FF, DDRP ; configure output at port P

bset DDRJ,$02

bclr PTJ,$02

lds #$2000 ; initialize stack pointer

ldy #100

jsr delayby10ms

jsr openLCD

ldx #welcome

jsr putsLCD

F2T1 ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCD

ldx #downward ; display a message (downward)

jsr putsLCD

ldy #100

jsr delayby10ms

movb #$06, PTB ; display 1

movb #$FE, PTP ; using 7seg #1

ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCD


floor1 ldab PTH

cmpb #$FB

lbeq F1T2

cmpb #$FD

lbeq F1T3

cmpb #$FE

lbeq F1T4

bra floor1

F3T1 ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCD

ldx #downward ; display a message (downward)

jsr putsLCD

ldy #100

jsr delayby10ms

movb #$5B, PTB ; display 2

movb #$FD, PTP ; using 7seg #2

ldy #100

jsr delayby10ms

movb #$06, PTB ; display 1

movb #$FE, PTP ; using 7seg #1

ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCD

bra floor1

F4T1 ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCD


ldx #downward ; display a message (downward)

jsr putsLCD

ldy #100

jsr delayby10ms

movb #$4F, PTB ; display 3

movb #$FB, PTP ; using 7seg #3

ldy #100

jsr delayby10ms

movb #$5B, PTB ; display 2

movb #$FD, PTP ; using 7seg #2

ldy #100

jsr delayby10ms

movb #$06, PTB ; display 1

movb #$FE, PTP ; using 7seg #1

ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCD

jsr floor1

F1T2 ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCDjsr cmd2lcd ; "

ldx #upward ; display a message (upward)

jsr putsLCD

ldy #100

jsr delayby10ms

movb #$5B, PTB ; display 2

movb #$FD, PTP ; using 7seg #2

ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCD


floor2 ldab PTH

cmpb #$F7

lbeq F2T1

cmpb #$FD

lbeq F2T3

cmpb #$FE

lbeq F2T4

bra floor2

F3T2 ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCDjsr cmd2lcd ; "

ldx #downward ; display a message (downward)

jsr putsLCD

ldy #100

jsr delayby10ms

movb #$5B, PTB ; display 2

movb #$FD, PTP ; using 7seg #2

ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCD

bra floor2

F4T2 ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCDjsr cmd2lcd ; "

ldx #downward ; display a message (downward)

jsr putsLCD

ldy #100

jsr delayby10ms
movb #$4F, PTB ; display 3

movb #$FB, PTP ; using 7seg #3

ldy #100

jsr delayby10ms

movb #$5B, PTB ; display 2

movb #$FD, PTP ; using 7seg #2

ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCD

bra floor2

F1T3 ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCDjsr cmd2lcd ; "

ldx #upward ; display a message (upward)

jsr putsLCD

ldy #100

jsr delayby10ms

movb #$5B, PTB ; display 2

movb #$FD, PTP ; using 7seg #2

ldy #100

jsr delayby10ms

movb #$4F, PTB ; display 3

movb #$FB, PTP ; using 7seg #3

ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCD

floor3 ldab PTH

cmpb #$F7

lbeq F3T1
cmpb #$FB

lbeq F3T2

cmpb #$FE

lbeq F3T4

bra floor3

F2T3 ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCDjsr cmd2lcd ; "

ldx #upward ; display a message (upward)

jsr putsLCD

ldy #100

jsr delayby10ms

movb #$4F, PTB ; display 3

movb #$FB, PTP ; using 7seg #3

ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCD

bra floor3

F4T3 ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCDjsr cmd2lcd ; "

ldx #downward ; display a message (downward)

jsr putsLCD

ldy #100

jsr delayby10ms

movb #$4F, PTB ; display 3

movb #$FB, PTP ; using 7seg #3

ldy #100

jsr delayby10ms
jsr openLCD ; initialize the LCD

bra floor3

F1T4 ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCDjsr cmd2lcd ; "

ldx #upward ; display a message (upward)

jsr putsLCD

ldy #100

jsr delayby10ms

movb #$5B, PTB ; display 2

movb #$FD, PTP ; using 7seg #2

ldy #100

jsr delayby10ms

movb #$4F, PTB ; display 3

movb #$FB, PTP ; using 7seg #3

ldy #100

jsr delayby10ms

movb #$66, PTB ; display 4

movb #$F7, PTP ; using 7seg #4

ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCD

floor4 ldab PTH

cmpb #$F7

lbeq F4T1

cmpb #$FB

lbeq F4T2

cmpb #$FD

lbeq F4T3
bra floor4

F2T4 ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCDjsr cmd2lcd ; "

ldx #upward ; display a message (upward)

jsr putsLCD

ldy #100

jsr delayby10ms

movb #$4F, PTB ; display 3

movb #$FB, PTP ; using 7seg #3

ldy #100

jsr delayby10ms

movb #$66, PTB ; display 4

movb #$F7, PTP ; using 7seg #4

ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCD

bra floor4

F3T4 ldy #100

jsr delayby10ms

jsr openLCD ; initialize the LCDjsr cmd2lcd ; "

ldx #upward ; display a message (upward)

jsr putsLCD

ldy #100

jsr delayby10ms ; delay by 10ms

movb #$66, PTB ; display 4

movb #$F7, PTP ; using 7seg #4

ldy #100

jsr delayby10ms ; delay by 10ms


jsr openLCD ; initialize the LCD

lbra floor4

welcome dc.b " WELCOME :) ",0

upward dc.b " GOING UP ",0

downward dc.b " GOING DOWN ",0

#include "c:\miniide\delay.asm" ; delay routines

#include "c:\miniide\lcd.asm" ; LCD routines

end

Você também pode gostar