Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Таймер и ШИМ одновременно в Меге 8, таймер чего-то не работает....((
Отправлено
Fantomas 27 июня 2008 г. 14:30
Таймер и ШИМ одновременно в Меге 8, таймер чего-то не работает....((
Чего-то не работает прерывание по 0му таймеру, хотя вроде ШИМ работает.... Ух....
;**********************Âåëî ïðîãà íà÷àòà 23 ìàÿ â 21-47**********************
.include "m8def.inc"
.def tempL = r16 ; ïðèñâàèâàåì ðåãèñòðó R16 èìÿ tempH
.def tempH = r17 ; ïðèñâàèâàåì ðåãèñòðó R17 èìÿ tempL
.def Temp0 = r18 ; Temp
.def Temp1 = r19 ; Òåìð
.def LedEnd = r20 ; Òåìð
.def Cnt =r21 ;âðåìåííûé ðåãèñòð Cnt
.def Del =r22 ;âðåìåííûé ðåãèñòð Del
.equ DIRD = 0b00000011 ;íàïðàâëåíèå äëÿ ïîðòà D
.equ PUPD = 0b01111100 ;pull-ups äëÿ ïîðòà D
.equ SD = PD0 ;ëèíèÿ äàííûõ DI
.equ SC = PD1 ;òàêòîâàÿ ëèíèÿ SK
.equ sector=$80
.equ bait0=$81
.equ vmem=$180 ;48 áàéò âèäåîáóôåð
.DSEG
.cseg
rjmp RESET
rjmp INT_0
rjmp INT_1
rjmp TIMER2_COMP
rjmp TIMER2_OVF
rjmp TIMER1_CAPT
rjmp TIMER1_COMPA
rjmp TIMER1_COMPB
rjmp TIMER1_OVF
rjmp TIMER0_OVF
rjmp SPI_STC
rjmp USART_RXC
rjmp USART_UDRE
rjmp USART_TXC
rjmp ADC_
rjmp EE_RDY
rjmp ANA_COMP
rjmp TWI
rjmp SPM_RDY
RESET:
INT_0:
INT_1:
TIMER2_COMP:
TIMER2_OVF:
TIMER1_CAPT:
TIMER1_COMPA:
TIMER1_COMPB:
TIMER1_OVF:
;TIMER0_OVF:
SPI_STC:
USART_RXC:
USART_UDRE:
USART_TXC:
;ADC_:
EE_RDY:
ANA_COMP:
TWI:
SPM_RDY:
reti
;=========================================INIT=========================================;
init:
ldi r16,LOW(RAMEND) ; Èíèöèàëèçèðóåì ñòåê
out SPl,r16
ldi r16,HIGH(RAMEND)
out SPH,r16
; Define pull-ups and set outputs high
; Define directions for port pins
ldi Temp0,(1<<PB3)|(1<<PB2)|(1<<PB1)|(1<<PB0) ;Óñòàíîâêà ëèíèé âûâîäà
ldi Temp1,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0)
out PORTB,Temp0
out DDRB,Temp1
ldi Temp0,(0<<PC1)|(0<<PC0) ;Ëèíèè ââîäà
ldi Temp1,(0<<DDC1)|(0<<DDC0)
out PORTC,Temp0
out DDRC,Temp1
ldi Temp0,(1<<PD3)|(1<<PD2)|(1<<PD1)|(1<<PD0) ;Ëèíèè ââîäà IR and RS232
ldi Temp1,(0<<DDD3)|(0<<DDD2)|(0<<DDD1)|(0<<DDD0)
out PORTC,Temp0
out DDRC,Temp1
ldi Temp0,(1<<WGM21)|(1<<WGM20)|(1<<COM21)|(1<<COM20)|(1<<CS21) ;Ïîïûòêà èíèöèàëèçàöèè ØÈÌ
out TCCR2,Temp0
;Òóò áóäåì ïûòàòüñÿ èíèöèàëèçèðîâàòü ØÈÌ
ldi tempH,$00 ; Çàíîñèì çíà÷åíèå $00E0 â ðåãèñòð OCR1A
out OCR1AH,tempH
ldi tempL,$E0 ;
out OCR1AL,tempL
ldi tempH,$00 ; Çàíîñèì çíà÷åíèå $0010 â ðåãèñòð OCR1B
out OCR1BH,tempH
ldi tempL,$10 ;
out OCR1BL,tempL
ldi Temp0,0b11100001 ; èíèöèàëèçàöèÿ òàéìåð/ñ÷åò÷èêà Ò1
out TCCR1A,Temp0
ldi Temp0,0b00001010
out TCCR1B,Temp0
;sbi DDRB,1 ; ïîäêëþ÷àåì âûâîä PB1 ê òàéìåð/ñ÷åò÷èêó Ò1
;sbi DDRB,2 ; ïîäêëþ÷àåì âûâîä PB2 ê òàéìåð/ñ÷åò÷èêó Ò1
ldi Temp0,0b00000101 ;Çàíîñèì çíà÷åíèå $ â ðåãèñòð OCR2
out OCR2,Temp0
ldi Temp0,0b01101101 ; èíèöèàëèçàöèÿ òàéìåð/ñ÷åò÷èêà Ò2
out TCCR2,Temp0
;sbi DDRB,3 ; ïîäêëþ÷àåì âûâîä PB3 ê òàéìåð/ñ÷åò÷èêó Ò2
;Òóò áóäåì ïûòàòüñÿ èíèöèàëèçèðîâàòü ÀÖÏ
ldi Temp0,(1<<REFS1)|(1<<REFS0) ;Ïîïûòêà óñòàíîâèòü âíóòðåííåå îïîðíîå íàïðÿæåíèå
out ADMUX,Temp0
ldi Temp0,(1<<ADEN)|(1<<ADIE) ;Ïîïûòêà èíèöèàëèçàöèè ÀÖÏ
out ADCSRA,Temp0
;Òóò áóäåì ïûòàòüñÿ èíèöèàëèçèðîâàòü 8ìè áèòíûé Òàéìåð0
;ldi Temp0,0b00000011 ;Ïîïûòêà óñòàíîâèòü òàêòîâûé ñèãíàë = CK/64
ldi Temp0,0b00000101 ;Ïîïûòêà óñòàíîâèòü òàêòîâûé ñèãíàë = CK/1024
out TCCR0,Temp0
ldi Temp0,(1<<TOIE0) ;Ïîïûòêà èíèöèàëèçàöèè ðàçðåøèòü ïðåðûâàíèÿ íóëåâîãî êîìïàðàòîðà
out TIMSK,Temp0
ldi Temp0,(1<<TOV0) ;Ïîïûòêà èíèöèàëèçàöèè ðàçðåøèòü
out TIFR,Temp0
ldi Temp0,0b11111111 ;Ïîïûòêà èíèöèàëèçàöèè òàéìåðà íà 255
out TCNT0,Temp0
ldi Temp0,0b10000000 ;Ïîïûòêà èíèöèàëèçàöèè ðàçðåøèòü ïðåðûâàíèÿ
out SREG,Temp0
sei ; Ðàçðåøèëè ïðåðûâàíèÿ
;=========================================MAIN=========================================;
main:
rjmp main
TIMER0_OVF:
ldi Temp1,0b11111111
out portd,Temp1
ldi Temp1,0b00000010
rcall LCD
;ldi Temp1,0 ;îáíóëåíèå òàéìåðà
;out TCNT0,Temp1
;ldi Temp0,(0<<TOV0) ;Ïîïûòêà èíèöèàëèçàöèè ðàçðåøèòü
;out TIFR,Temp0
; andi LedEnd,0b00000001
; cpi LedEnd,1
; brne on
; ldi LedEnd,0
; ldi tempH,$00 ; Çàíîñèì çíà÷åíèå $00E0 â ðåãèñòð OCR1A
; out OCR1AH,tempH
; ldi tempL,$00 ;
; out OCR1AL,tempL
; reti
on:
; ldi LedEnd,1
; ldi tempH,$00 ; Çàíîñèì çíà÷åíèå $00E0 â ðåãèñòð OCR1A
; out OCR1AH,tempH
; ldi tempL,$E0 ;
; out OCR1AL,tempL
reti
ADC_:
in TempL,ADCL
in TempH,ADCH
;Ïîäïðîãðàììà âûâîäà ñèìâîëà íà èíäèêàòîð:
;êîä ñèìâîëà äîëæåí íàõîäèòüñÿ â ðåãèñòðå Temp1
LCD: ldi Cnt,4 ;çàãðóçêà ñ÷åò÷èêà
swap Temp1 ;ïîäãîòîâêà ìë. òåòðàäû ê ñäâèãó
LDL: rol Temp1 ;ñäâèã
brcs LD1
LD0: cbi PORTD,SD ;ñáðîñ ëèíèè äàííûõ, åñëè áèò=0
rjmp STR
LD1: sbi PORTD,SD ;óñòàíîâêà ëèíèè äàííûõ, åñëè áèò=1
STR: sbi PORTD,SC ;óñòàíîâêà ëèíèè òàêòèðîâàíèÿ
ldi Del,5
HNG1: dec Del ;çàäåðæêà íà óñòàíîâêó äàííûõ
brne HNG1
cbi PORTD,SC ;ñáðîñ ëèíèè òàêòèðîâàíèÿ
ldi Del,10
HNG2: dec Del ;çàäåðæêà íà óäåðæàíèå äàííûõ
brne HNG2
dec Cnt
brne LDL ;öèêë, åñëè íå ïîñëåäíèé áèò
ldi Del,25
HNG3: dec Del ;ìåæñèìâîëüíàÿ çàäåðæêà
brne HNG3
ret
Составить ответ | Вернуться на конференцию
Ответы