;********************************************************** ;* File Name :LED.asm ;* Title :Test program for LED display ;* Date :Ingo Gerlach / 10.10.99 ;* Version :1.0 / 10.10.99 ;* Version : ;* ęC :AT90S1200...8515 ;* : ;* Changes : ;* ;*********************************************************** ; ;***** Directives .device AT90S1200 ;device type .NOLIST .include "1200def.inc" .list .listmac ; Show data ; Structure of data ; MSB LSB ; 7 6 5 4 3 2 1 0 ; 0 0 0 0 0 0 0 0 ; ; Select position 1 = 1. 2 = 2. etc ; Number in BCD code ; ;e.g. 10010010b = 146d = pos. 2, value 9 ; ; Main program register variables ;--------------------------------------------------------------------------- .def temp = r16 ; Registers / LED ;--------------------------------------------------------------------------- .def cntr = r20 ; counter .def dly = r21 ; delay loop variable .def pos = r23 ; position .def byte = r24 ; byte ; Equates ;--------------------------------------------------------------------------- .equ LED_qty = 6 ; number of LEDs .equ LED_Del = 40 ; delay .equ OutPort = PortB ;***** Interrupt vector table reset: rjmp main ; main routine reti ; external interrupt0 handle reti ; T/C0 overflow interrupt handle reti ; analogue comparator interrupt handle ;***** Functions ********************************************************* ;************************** ;***** Main ******************************** main: ; ldi temp, LOW(RAMEND) ; setup StackPointer for > 90S1200 ; out SPL, temp ; initialize SPL ; ldi temp, HIGH(RAMEND) ; out SPH, temp ; initialize SPH ldi temp,255 ; temp = 255 out ddrb,temp ; port B output Rcall LED_Null ; reset display mainloop: ; Show 145.675 ldi Pos,1 ldi Byte,1 Rcall Led_Show ldi Pos,2 ldi Byte,4 Rcall Led_Show ldi Pos,3 ldi Byte,5 Rcall Led_Show ldi Pos,4 ldi Byte,6 Rcall Led_Show ldi Pos,5 ldi Byte,7 Rcall Led_Show ldi Pos,6 ldi Byte,5 Rcall Led_Show forever: rjmp forever ; ***** End of main program ******************* ; *** Include Files *** .include "LEDDisp.inc"