Sida 1 av 1
Seriellt med pic i asm
Postat: 8 februari 2005, 22:24:46
av Virror
Har programerat éndel asm med pic 16f84, men hur tar man hand om seriell data? Skulle någon kanske skriva ett kort exempel som lägger in seriell data i ett register?
Postat: 8 februari 2005, 23:07:13
av Hedis
Du lägger in talet precis oms vilket tal som hellst i ett register (som du sedan kanske kopierar till "ut-registret" som den kommer att skicka ifrån.
Enda skillnaden är att den skickar bit för bit istället för hela byten på en 8-bitars bred "buss".
Så vill du skicka $ff så skriver du 0b1111 1111 i registret.
Nu har jag inte använt uartén på en pic, men på en AVR så kollar man sedan ett register för att se om uart:en är redo att sända, man skyfflar in talet i registret, skriver "skicka" biten o vipps så matar den iväg det hela.
Postat: 9 februari 2005, 01:09:19
av cyr
I F84 finns det ingen UART/USART.
Klart enklast är att byta till en F627 eller något liknande, som har USART. Annars får man göra det i mjukvara (bit bang).
Mjukvaruversionen blir något i den här stilen (ta emot från PORTB0 till register data):
rrf data ; Shifta register ett steg
bcf data,7 ; 0 i bit 7
btfsc PORTB,0 ; kolla insignalen
bsf data,7 ; 1 i bit 7 om porten var 1
Upprepas för varje databit, genom någon loop eller timer-interrupt. Dessutom måste det till startbit-detection och lite annat vilket krånglar till en del.
Ganska mycket jobb och inte värt det när det finns så billiga chip med inbyggd USART.
Postat: 9 februari 2005, 12:14:35
av Virror
ok, tacka så mycket, anledningen till att jag ville använda en 16f84 är att jag har en liggandes hemma.