PCW Compiler ile program daha kısa oluyor... (C )
PA0 butonuna basıldığında 2 fazlı sürülür
PA1 butonuna basıldığında saat yönünün tersine sürülür
PA2 butonu ile durur
#include<16f84A.h>
#use Delay(clock=4000000)
#fuses XT,NOWDT,NOPROTECT
#byte port_a=5
#byte port_b=6
int const a[4]={0x0C,0x06,0x03,0x09};
io_set(){
set_tris_a(0x1f);
set_tris_b(0x00);
}
main(){
int in,k;
io_set();
while(1) {
in=0;
port_b=0;
in=~port_a&0x01;
while(in==1)
{
for(k=0;k<4;k++){
port_b=a[k];delay_ms(50);
if(input(PIN_A2)==0)
break;
}
if(input(PIN_A2)==0)
break;
}
}
}
Diğer bir çözüm C ile
#include<16f84A.h>
#use Delay(clock=4000000)
#fuses XT,NOWDT,NOPROTECT
#byte port_a=5
#byte port_b=6
int const a[4]={0x0C,0x06,0x03,0x09};
int const d[4]={0x09,0x03,0x06,0x0C};
io_set(){
set_tris_a(0x1f);
set_tris_b(0x00);
}
main(){
int in,k,an;
io_set();
while(1) {
in=port_a&0x01;
an=port_a&0x02;
while(in==0){
if(INPUT(PIN_A2)==0)
break;
for(k=0;k<4;k++){
port_b=a[k];delay_ms(20);
}}
while(an==0){
if(INPUT(PIN_A2)==0)
break;
for(k=0;k<4;k++){
port_b=d[k];delay_ms(20);
}} }}