Я наверное немного не правильно поставил вопрос.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено new_student 19 июня 2004 г. 11:27
В ответ на: Вопрос к знатокам AVRStudio3. Извините за наивные вопросы я только начал заниматься контроллерами. отправлено new_student 19 июня 2004 г. 09:23

Есть вся документация на индикатор и вот кусок кода

.ESEG ;EEPROM segment
.org 0
CntClL: .db 1
CntClH: .db 1

.DSEG ; data segment
.org 0x60
Str1: .byte 16 ; 1-я строка
.byte 1
Str2: .byte 16 ; 2-я строка
.byte 2

.CSEG
;*********************
;* Interrupt Vectors *
;*********************
rjmp RESET ; Reset
reti ;External Interrupt0 Vector Address
rjmp IntKey ;External Interrupt1 Vector Address
reti ;rjmp TIM2_COMP ;Output Compare2 Interrupt Vector Address
reti ; rjmp TIM2_OVF ;Overflow2 Interrupt Vector Address
reti ;Input Capture1 Interrupt Vector Address
rjmp TIM1_COMP ;Output Compare1A Interrupt Vector Address
reti ;Output Compare1B Interrupt Vector Address
rjmp TIM1_OVF ;Overflow1 Interrupt Vector Address
rjmp TIM0_OVF ;Overflow0 Interrupt Vector Address
reti ;SPI Interrupt Vector Address
reti ; rjmp UART_RXC ;UART Receive Complete Interrupt Vector Address
reti ;UART Data Register Empty Interrupt Vector Address
reti ; rjmp UART_TXC ;UART Transmit Complete Interrupt Vector Address
rjmp AdcComplete ;ADC Interrupt Vector Address
reti ;EEPROM Interrupt Vector Address
reti ;Analog Comparator Interrupt Vector Address


;
;**** RESET ****
RESET:
clr temp
out GIMSK,temp
out DDRA, temp
out DDRB, temp
out DDRC, temp
out DDRD, temp
out PORTA, temp
out PORTB, temp
out PORTC, temp
out PORTD, temp
ldi temp, 0b00000011
out DDRA, temp
ldi temp, $ff
out DDRB, temp
ldi temp, 0b11110111
out DDRD, temp
ldi temp, 0b11111111
out DDRC, temp
clr temp
out portc, temp
out PORTB, temp
ldi temp, 0b11000000
out PORTD, temp
sbi PORTD, PD0
sbi PORTD, PD1
sbi PORTD, PD2
sbi PORTD, PD3
sbi PORTD, levelU
ldi temp, 0b0000000
out PORTA, temp
sbi PORTA, PA5
sbi PORTA, PA6
sbi PORTA, PA7
ldi temp, low(RAMEND) ;init Stack Pointer
out SPL, temp
ldi temp, high(RAMEND) ;init Stack Pointer
out SPH, temp

ldi temp, 3
out MCUCR, temp
ldi temp, (1< out GIMSK, temp
out GIFR, temp
ldi temp, 0x0f
out WDTCR,temp
rcall InitLCD
rcall ClearBuf
rcall OutBufLCD
RESET_m1:
sbrs status, END_COMP1
rjmp RESET_m1
rcall Beep
clr mode
rcall InitMode
rcall InitTimer
rcall ModeToLcd
Loop:
sei
wdr
rjmp Loop

InitLCD:
ldi ZH, high(InitDispl*2)
ldi ZL, low(InitDispl*2)
InitLCD_m1:
lpm
adiw Zl,1
tst r0
breq InitLCD_m2
rcall SetIR
rjmp InitLCD_m1
InitLCD_m2:
ldi valWait,1
rcall delay
rcall LcdLoad
ret

OutBufLCD:
push sregTmp
in sregTmp,SREG ; store SREG
cli
push temp
clr ZH
ldi ZL,Str1
ldi temp, $80
mov r0,temp
rcall OutBufLCD1
ldi ZL,Str2
ldi temp, $c0
mov r0,temp
rcall OutBufLCD1
pop temp
out SREG,sregTmp ; restore SREG
pop sregTmp
ret

OutBufLCD1:
rcall SetIR
ldi temp,16
OutBufLCD_m1:
ld r0, Z+
rcall WrRAM
dec temp
brne OutBufLCD_m1
ret

ClearBuf:
ldi temp,33
clr ZH
ldi ZL,Str1
ldi temp1,$20
ClearBuf_m1:
st Z+,temp1
dec temp
brne ClearBuf_m1
ret
.......................................

InitMode:
clr ZH
ldi ZL,low(InitModeJmp)
add ZL,mode
ijmp
после перехода по команде ijmp выбираем режим 1

Mode1:
ldi ZL,low(txMode*2)
ldi ZH,high(txMode*2)
ldi TimerMin, TIME_AIR
InitAir_m1:
ret

Это все располагается в первой строке, а как во вторую строку вывести
текст который обозначен стркой txMode2

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru