Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; 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




Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 387:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru