Anonymní profil Slauf – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Slauf – Programujte.comAnonymní profil Slauf – Programujte.com

 

Příspěvky odeslané z IP adresy 84.21.109.–

Slauf
Assembler › Po jednom použití dál nejede!
26. 10. 2014   #195248

Muzete smazat chyba v registru preruseni... Omylem sem tam nastavil hodnotu z ATtiny13 namísto 25 , 45 ,85

Slauf
Assembler › Po jednom použití dál nejede!
26. 10. 2014   #195245

Mám přijímač dálkové ovládání. Přijme signál, nastaví port a po restartu už to nejde. Musím znovu přeprogramovat procík... Nevím co to tam může způsobovat... 

.NOLIST   
.INCLUDE "tn25def.inc"     
.LIST     


; --- !!! ZDE SE NASTAVUJE 7-bitove ID zarizeni !!! ----------------
.EQU ID=0b1001001
; ------------------------------------------------------------------


.DEF VYST1_P=R12	;predchozi stav prijimace bitu
.DEF VYST2_P=R13	;predchozi stav prijimace bitu 2
.DEF VYST1=R14		;posuvny registr prijimace bitu
.DEF VYST2=R15		;posuvny registr prijimace bitu 2

.DEF REG=R16		;pracovni registr
.DEF REG2=R17		;pracovni registr 2
.DEF STAV=R18		;registr stavu vstupu
.DEF PRODLEVA=R25	;prodleva do dalsi reakce ;zmena z R19 !!!!!!!!!!!!!!!!
.DEF KOPIE1=R20		;kopie vystupu
.DEF KOPIE2=R21		;kopie vystupu 2
.DEF BITY=R22		;pocitadlo bitu
.DEF ZALOHA=R23		;zalohuje casomiru
.DEF PRETEK=R24		;pretekani casovace


.EQU SMER=DDRB		;rizeni smeru  
.EQU PORT=PORTB		;port  
.EQU PINY=PINB		;port 
                    
.CSEG				;kodový segment   

.ORG 0
RJMP START

.ORG PCI0addr
RJMP SIGNAL
	
.ORG OC0Aaddr
RJMP CAS_VYPRSEL

START:

LDI REG,LOW(RAMEND)
OUT SPL,REG

;nastavi portB
LDI REG,0b00001000  ; tady jsem zmenil z 00001111 staci mi jen pinb4 !!!!! 
OUT SMER,REG
LDI REG,0b00000000
OUT PORT,REG

; NASTAVENI CASOVACU
LDI	REG,0b00000010 	; nastavi čítač na nulovani pri dosazeni porovnavane...
OUT	TCCR0A,REG    	; ...hodnoty (tzv. CTC), OC0 nevyuzit
LDI	REG,0b00000010 	; preddeleni 8
OUT	TCCR0B,REG    	; 
LDI	REG,255      	; nastavi porovnavanou hodnotu
OUT	OCR0A,REG     	; 
LDI	REG,0b00000100	; povoli preruseni OCIE0A
OUT	TIMSK,REG    	; tady jsem to zmenil !!!!!!!!!!!!!!! z timsk0


LDI	REG,0b00100000	; povoli preruseni PCINT
OUT	GIMSK,REG    	;

LDI	REG,0b00010000	; povoli preruseni PCINT na 4
OUT	PCMSK,REG    	;

LDI	REG,0b00110000	;povoli uspani (sleep) a nastavi mod power down
OUT	MCUCR,REG

;vypne analog. komparator - neni nikdy vyuzit (setri energii)
LDI	REG,0b10000000	
OUT	ACSR,REG  


CLR BITY

SEI

SMYCKA:
SLEEP
RJMP SMYCKA


SIGNAL:
IN STAV,PINY
SBRS STAV,4
RJMP SESTUPNA

; Nabezna hrana _- !!!!!!!!!!!!!!
; ------------------------------------------------------------------
IN ZALOHA,TCNT0
CLR REG
OUT TCNT0,REG

CPI ZALOHA,64
BRLO KONEC_HRAN
RCALL KONTROLA

RJMP KONEC_HRAN

; Sestupna hrana -_ !!!!!!!!!!!!!
; ------------------------------------------------------------------
SESTUPNA:

IN REG,TCNT0

CPI REG,8		;Prah delky zakmitu / kratkeho pulzu
BRLO ZAKMIT

CLR REG2
OUT TCNT0,REG2

CPI REG,128		;Prah delky dlouheho pulzu / prilis dlouheho pulzu
BRLO NE_KONEC_SNIMKU

CLR VYST1
CLR VYST2
CLR BITY
RJMP KONEC_HRAN

NE_KONEC_SNIMKU:

LSL VYST1
ROL VYST2
INC BITY
CPI REG,32		;Prah kratkeho pulzu / dlouheho pulzu
BRLO KRATKY_P
INC VYST1
KRATKY_P:

ZAKMIT_KONEC:
KONEC_HRAN:

LDI	REG,0b00100000	;povoli uspani (sleep) a nastavi mod idle
OUT	MCUCR,REG
RETI


ZAKMIT:
ADD REG,ZALOHA
OUT TCNT0,REG
RJMP ZAKMIT_KONEC




CAS_VYPRSEL:
;kontrola spravnosti prenosu
RCALL KONTROLA

INC PRETEK
CPI PRETEK,40
BRLO VYPRSENI_NE
CLR PRETEK

CLR PRODLEVA

LDI	REG,0b00110000	;povoli uspani (sleep) a nastavi mod power down
OUT	MCUCR,REG

VYPRSENI_NE:
RETI



KONTROLA:
CPI BITY,16		;nesedi-li pocet bitu, zahodi kod
BRLO CHYBA_BITY

CP VYST1_P,VYST1	;nejsou-li 2 po sobe jdouci kody stejne, nereaguje
CPC VYST2_P,VYST2
BRNE CHYBA_RUZNE

RCALL PRIJEM
CHYBA_BITY:

CLR VYST1
CLR VYST2

CHYBA_RUZNE:
MOVW VYST1_P,VYST1
CLR BITY
RET



PRIJEM:
CPI PRODLEVA,0
BRNE NEREAGUJ

;kontrola ID zarizeni
MOV REG,VYST1
LSR REG
CPI REG,ID
BRNE NEREAGUJ


MOVW REG,VYST1
ANDI REG,0b11111110
;spocita paritni bit (REG) z dolni pulky REG2 a z REG
EOR REG2,REG
SWAP REG
EOR REG2,REG
MOV REG,REG2
LSR REG2
LSR REG2
EOR REG,REG2
MOV REG2,REG
LSR REG2
EOR REG,REG2
ANDI REG,1
;porovna paritni bit
MOV REG2,VYST1
ANDI REG2,1
CP REG2,REG
BRNE NEREAGUJ

;porovna inverzi
MOV REG,VYST2
MOV REG2,VYST2
SWAP REG2
COM REG2
CP REG,REG2
BRNE NEREAGUJ


MOV KOPIE1,VYST2
ANDI KOPIE1,0b00001111

IN REG,PORT
CPI KOPIE1,0b00000001
BREQ TL0
CPI KOPIE1,0b00000010
BREQ TL1
CPI KOPIE1,0b00000100
BREQ TL2
CPI KOPIE1,0b00001000
BREQ TL3

RJMP NEREAGUJ

TL0:
SBRC REG,0
CBI PORT,0
SBRS REG,0
SBI PORT,0
RJMP KONEC_TL

TL1:
SBRC REG,1
CBI PORT,1
SBRS REG,1
SBI PORT,1
RJMP KONEC_TL

TL2:
SBRC REG,2
CBI PORT,2
SBRS REG,2
SBI PORT,2
RJMP KONEC_TL

TL3:
SBRC REG,3
CBI PORT,3
SBRS REG,3
SBI PORT,3
RJMP KONEC_TL

KONEC_TL:
LDI PRODLEVA,1
NEREAGUJ:
RET

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý