#include<16f877a.h>
#fuses xt
#use delay(clock=20000000)
#byte port_a=5
#byte port_b=6
#byte port_d=8
io_set() {
set_tris_a(0xff);
set_tris_b(0xff);
set_tris_d(0x00);
}
Void main() {
io_set();
while(1){
switch(~port_b&0x1f){
case 1:output_bit(pin_D0,1); delay_ms(1.1);
output_bit(pin_D0,0);delay_us(18.9);
break;
case 2:output_bit(pin_D1,1); delay_ms(1.1);
output_bit(pin_D1,0); delay_us(18.9);
break;
case 4:output_bit(pin_D2,1); delay_ms(1.1);
output_bit(pin_D2,0); delay_us(18.9);
break;
case 8:output_bit(pin_D3,1); delay_ms(1.1);
output_bit(pin_D3,0); delay_us(18.9);
break;
case 16:output_bit(pin_D4,1); delay_ms(1.1);
output_bit(pin_D4,0); delay_us(18.9);
break;
switch(~port_a&0x1f){
case 1:output_bit(pin_D4,1); delay_ms(2);
output_bit(pin_D4,0); delay_us(18);
break;
case 2:output_bit(pin_D3,1); delay_ms(2);
output_bit(pin_D3,0); delay_us(18);
break;
case 4:output_bit(pin_D2,1); delay_ms(2);
output_bit(pin_D2,0); delay_us(18);
break;
case 8:output_bit(pin_D1,1); delay_ms(2);
output_bit(pin_D1,0); delay_us(18);
break;
case 16:output_bit(pin_D0,1); delay_ms(2);
output_bit(pin_D0,0); delay_us(18);
break;
}
}
}
}