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.