CODE
.include "m640def.inc" ;
.list ;
.def temp=R17 ;
.def rab=R18 ;
.equ kdel=30 ;
;------- reservation of call
.dseg ;
.org 0x200 ;
buf: .byte 1 ;
;------- begining of program code
.cseg ;
.org 0 ;
;------- redefining of interrupt vector
start:
jmp init; Reset Handler
nop ;
reti ; IRQ0 Handler
nop ;
reti ; IRQ1 Handler
nop ;
reti ; IRQ2 Handler
nop ;
reti ; IRQ3 Handler
nop ;
reti ; IRQ4 Handler
nop ;
reti ; IRQ5 Handler
nop ;
reti ; IRQ6 Handler
nop ;
reti ; IRQ7 Handler
nop ;
reti ; PCINT0 Handler
nop ;
reti ; PCINT1 Handler
nop ;
reti ; PCINT2 Handler
nop ;
reti ; Watchdog Timeout Handler
nop ;
reti ; Timer2 CompareA Handler
nop ;
reti ; Timer2 CompareB Handler
nop ;
reti ; Timer2 Overflow Handler
nop ;
reti ; Timer1 Capture Handler
nop ;
reti ; Timer1 CompareA Handler
nop ;
jmp prtim ; Timer1 CompareB Handler
nop ;
reti ; Timer1 CompareC Handler
nop ;
reti ; Timer1 Overflow Handler
nop ;
reti ; Timer0 CompareA Handler
nop ;
reti ; Timer0 CompareB Handler
nop ;
reti ; Timer0 Overflow Handler
nop ;
reti ; SPI Transfer Complete Handler
nop ;
reti ; USART0 RX Complete Handler
nop ;
reti ; USART0,UDR Empty Handler
nop ;
reti ; USART0 TX Complete Handler
nop ;
reti ; Analog Comparator Handler
nop ;
reti ; ADC Conversion Complete Handl
nop ;
reti ; EEPROM Ready Handler
nop ;
reti ; Timer3 Capture Handler
nop ;
reti ; Timer3 CompareA Handler
nop ;
reti ; Timer3 CompareB Handler
nop ;
reti ; Timer3 CompareC Handler
nop ;
reti ; Timer3 Overflow Handler
nop ;
reti ; USART1 RX Complete Handler
nop ;
reti ; USART1,UDR Empty Handler
nop ;
reti ; USART1 TX Complete Handler
nop ;
reti ; 2-wire Serial Handler
nop ;
reti ; SPM Ready Handler
nop ;
reti ; Timer4 Capture Handler
nop ;
reti ; Timer4 CompareA Handler
nop ;
reti ; Timer4 CompareB Handler
nop ;
reti ; Timer4 CompareC Handler
nop ;
reti ; Timer4 Overflow Handler
nop ;
reti ; Timer5 Capture Handler
nop ;
reti ; Timer5 CompareA Handler
nop ;
reti ; Timer5 CompareB Handler
nop ;
reti ; Timer5 CompareC Handler
nop ;
reti ; Timer5 Overflow Handler
nop ;
reti ; USART2 RX Complete Handler
nop ;
reti ; USART2,UDR Empty Handler
nop ;
reti ; USART2 TX Complete Handler
nop ;
reti ; USART3 RX Complete Handler
nop ;
reti ; USART3,UDR Empty Handler
nop ;
reti ; USART3 TX Complete Handler
nop ;
int_ret: reti
;------ initialization module
init:
ldi r16, high(RAMEND) ;
out SPH,r16 ; Set Stack Pointer to top of RAM
ldi r16, low(RAMEND) ;
out SPL,r16 ;
;------ I/O ports initialization
ldi temp,0xFF ;
sts DDRL,temp ;
;------ Timer 1 initialization
ldi temp,0x01 ;
sts TCCR1B,temp ;
ldi temp,high(kdel);
sts OCR1BH,temp ;
ldi temp,low(kdel);
sts OCR1BL,temp ;
;------ define interrupt mask
ldi temp,0x04 ;
sts TIMSK1,temp ;
;------ comparator initialization
ldi temp,0x80 ;
out ACSR,temp ;
sei ;
;------ begining of main function
main:
ldi rab,0x80 ;
ldi temp,0xFF ;
sts buf,rab ;
eor temp,rab ;
sts PORTL,temp ;
m1: rjmp m1 ;
;------ interrupt subprogram
prtim: push temp ;
push rab ;
lds rab,buf ;
;------ left shift
p1:
lsr rab ;
brcc p3 ;
ldi rab,0x80 ;
p3:
ldi temp,0xFF ;
eor temp,rab ;
sts PORTL,temp ;
sts buf,rab ;
pop rab ;
pop temp ;
reti ;
.list ;
.def temp=R17 ;
.def rab=R18 ;
.equ kdel=30 ;
;------- reservation of call
.dseg ;
.org 0x200 ;
buf: .byte 1 ;
;------- begining of program code
.cseg ;
.org 0 ;
;------- redefining of interrupt vector
start:
jmp init; Reset Handler
nop ;
reti ; IRQ0 Handler
nop ;
reti ; IRQ1 Handler
nop ;
reti ; IRQ2 Handler
nop ;
reti ; IRQ3 Handler
nop ;
reti ; IRQ4 Handler
nop ;
reti ; IRQ5 Handler
nop ;
reti ; IRQ6 Handler
nop ;
reti ; IRQ7 Handler
nop ;
reti ; PCINT0 Handler
nop ;
reti ; PCINT1 Handler
nop ;
reti ; PCINT2 Handler
nop ;
reti ; Watchdog Timeout Handler
nop ;
reti ; Timer2 CompareA Handler
nop ;
reti ; Timer2 CompareB Handler
nop ;
reti ; Timer2 Overflow Handler
nop ;
reti ; Timer1 Capture Handler
nop ;
reti ; Timer1 CompareA Handler
nop ;
jmp prtim ; Timer1 CompareB Handler
nop ;
reti ; Timer1 CompareC Handler
nop ;
reti ; Timer1 Overflow Handler
nop ;
reti ; Timer0 CompareA Handler
nop ;
reti ; Timer0 CompareB Handler
nop ;
reti ; Timer0 Overflow Handler
nop ;
reti ; SPI Transfer Complete Handler
nop ;
reti ; USART0 RX Complete Handler
nop ;
reti ; USART0,UDR Empty Handler
nop ;
reti ; USART0 TX Complete Handler
nop ;
reti ; Analog Comparator Handler
nop ;
reti ; ADC Conversion Complete Handl
nop ;
reti ; EEPROM Ready Handler
nop ;
reti ; Timer3 Capture Handler
nop ;
reti ; Timer3 CompareA Handler
nop ;
reti ; Timer3 CompareB Handler
nop ;
reti ; Timer3 CompareC Handler
nop ;
reti ; Timer3 Overflow Handler
nop ;
reti ; USART1 RX Complete Handler
nop ;
reti ; USART1,UDR Empty Handler
nop ;
reti ; USART1 TX Complete Handler
nop ;
reti ; 2-wire Serial Handler
nop ;
reti ; SPM Ready Handler
nop ;
reti ; Timer4 Capture Handler
nop ;
reti ; Timer4 CompareA Handler
nop ;
reti ; Timer4 CompareB Handler
nop ;
reti ; Timer4 CompareC Handler
nop ;
reti ; Timer4 Overflow Handler
nop ;
reti ; Timer5 Capture Handler
nop ;
reti ; Timer5 CompareA Handler
nop ;
reti ; Timer5 CompareB Handler
nop ;
reti ; Timer5 CompareC Handler
nop ;
reti ; Timer5 Overflow Handler
nop ;
reti ; USART2 RX Complete Handler
nop ;
reti ; USART2,UDR Empty Handler
nop ;
reti ; USART2 TX Complete Handler
nop ;
reti ; USART3 RX Complete Handler
nop ;
reti ; USART3,UDR Empty Handler
nop ;
reti ; USART3 TX Complete Handler
nop ;
int_ret: reti
;------ initialization module
init:
ldi r16, high(RAMEND) ;
out SPH,r16 ; Set Stack Pointer to top of RAM
ldi r16, low(RAMEND) ;
out SPL,r16 ;
;------ I/O ports initialization
ldi temp,0xFF ;
sts DDRL,temp ;
;------ Timer 1 initialization
ldi temp,0x01 ;
sts TCCR1B,temp ;
ldi temp,high(kdel);
sts OCR1BH,temp ;
ldi temp,low(kdel);
sts OCR1BL,temp ;
;------ define interrupt mask
ldi temp,0x04 ;
sts TIMSK1,temp ;
;------ comparator initialization
ldi temp,0x80 ;
out ACSR,temp ;
sei ;
;------ begining of main function
main:
ldi rab,0x80 ;
ldi temp,0xFF ;
sts buf,rab ;
eor temp,rab ;
sts PORTL,temp ;
m1: rjmp m1 ;
;------ interrupt subprogram
prtim: push temp ;
push rab ;
lds rab,buf ;
;------ left shift
p1:
lsr rab ;
brcc p3 ;
ldi rab,0x80 ;
p3:
ldi temp,0xFF ;
eor temp,rab ;
sts PORTL,temp ;
sts buf,rab ;
pop rab ;
pop temp ;
reti ;