Kod till denna koppling? (nybörjarfråga)
Postat: 10 april 2007, 19:42:11
Nu har jag lyckats lära mig de enklaste komandonen i assembler, men en hel del återstår för mig. Jag gjorde följande schema:

http://img352.imageshack.us/img352/1951/kopplayn6.jpg
med följande kod:
;*****Konstanter****
STATUS equ 03h
TRISA equ 85h
PORTA equ 05h
COUNT1 equ 20h
COUNT2 equ 21h
;****Sätter portar****
bsf STATUS,5 ;gå till bank 1
movlw 00h ;Gör port A till output
movwf TRISA
bcf STATUS,5 ;gå till bank 0
movlw 02h
;****kör en xor för att byta status på lysdioden****
Start xorwf PORTA,1
;****kör en delay och går till Start****
call Delay
goto Start
;****Subrutin för delay****
Delay
Loop1 decfsz COUNT1,1
goto Loop1
decfsz COUNT2,1
goto Loop1
return
end
Men nu till min fråga. Om jag istället vill att lysdioden ska blinka exakt varje sekund, hur gör jag då? Har läst i databladet om TMR1 som tydligen kan räkna varje klockcykel och lagra detta i en 16-bitars kod och som sedan har en flagga som talar om när den går från 65535 till 0. Rätta mig om jag har fel. Men iaf hur skulle koden se ut om jag ville använda TMR1?

http://img352.imageshack.us/img352/1951/kopplayn6.jpg
med följande kod:
;*****Konstanter****
STATUS equ 03h
TRISA equ 85h
PORTA equ 05h
COUNT1 equ 20h
COUNT2 equ 21h
;****Sätter portar****
bsf STATUS,5 ;gå till bank 1
movlw 00h ;Gör port A till output
movwf TRISA
bcf STATUS,5 ;gå till bank 0
movlw 02h
;****kör en xor för att byta status på lysdioden****
Start xorwf PORTA,1
;****kör en delay och går till Start****
call Delay
goto Start
;****Subrutin för delay****
Delay
Loop1 decfsz COUNT1,1
goto Loop1
decfsz COUNT2,1
goto Loop1
return
end
Men nu till min fråga. Om jag istället vill att lysdioden ska blinka exakt varje sekund, hur gör jag då? Har läst i databladet om TMR1 som tydligen kan räkna varje klockcykel och lagra detta i en 16-bitars kod och som sedan har en flagga som talar om när den går från 65535 till 0. Rätta mig om jag har fel. Men iaf hur skulle koden se ut om jag ville använda TMR1?