Техника микропроцессорных систем в коммутации. Проектирование микропроцессорных систем на базе микроконтроллеров AVR фирмы Atmel. Горохин В.Н. - 28 стр.

UptoLike

Составители: 

55
; *************************************
.CSEG
.ORG 0x00
START:
rjmp RESET ; Reset vector
.ORG INT0addr
rjmp START_COUNTER
.ORG INT1addr
rjmp STOP_COUNTER
START_COUNTER:
ldi STATUS, 0x01
rcall LCD_TXT_STARTED
sei
rjmp COUNTER_IN
COUNTER:
ldi CNTR1, 0
COUNTER_OUT:
ldi CNTR2, 0
COUNTER_IN:
rcall LCD_PRINT_CNTRS
inc CNTR2
cpi CNTR2, 100
brne COUNTER_IN
inc CNTR1
cpi CNTR1, 100
brne COUNTER_OUT
rjmp COUNTER
STOP_COUNTER:
tst STATUS
breq CLEAR_COUNTER
ldi STATUS, 0x00
rcall LCD_TXT_PAUSED
sei
rjmp FOREVER
CLEAR_COUNTER:
rcall LCD_TXT_STOPPED
ldi CNTR1, 0
ldi CNTR2, 0
rcall LCD_PRINT_CNTRS
sei
rjmp FOREVER
56
; ****************************************
; Device initialization
; .ORG 0x10
RESET:
ldi TEMP, HIGH(RAMEND) ; ɢɧɢɰɢɚɥɢɡɚɰɢɹ ɩɚɦɹɬɢ ɫɬɟɤɚ
out SPH, TEMP
ldi TEMP, LOW(RAMEND)
out SPL, TEMP ; ɡɚɜɟɪɲɟɧɢɟ ɢɧɢɰɢɚɥɢɡɚɰɢɢ ɩɚɦɹɬɢ ɫɬɟɤɚ
ldi TEMP, 0x0A ; For INT0, INT1
out MCUCR, TEMP ; select falling edge
ldi TEMP, 0xC0 ;
out GICR, TEMP ; Enable INT0, INT1
ldi TEMP, 0x17 ; 00010111, setting bits for OC1, PB2 and PB4, PB0
out DDRB, TEMP ; set Port B direction as above
ldi TEMP, 0x28 ; 00101000, PB5 pullup, PB4 lo, PB3 pullup, PB2 lo, OC1 low,
out PORTB, TEMP ; set Port B
ldi TEMP, 0xFF ; All outputs except bits 0,1 (UART)
out DDRA, TEMP ;
ldi STATUS, 0x00
ldi CNTR1, 0x00
ldi CNTR2, 0x00
rcall LCD_SETUP; ; Initialize LCD and send
rcall LCD_TXT_READY; ; a welcome message
sei
FOREVER:
rjmp FOREVER
LCD_PRINT_CNTRS:
rcall RETURN_CURSOR_4
mov PARAM, CNTR1
rcall BIN_TO_TEXT
mov PARAM, CNTR2
rcall BIN_TO_TEXT
ret
BIN_TO_TEXT:
push PARAM
ldi XL, 0