cho e hỏi taị sao Port D của con Pic 16f877a khi e cho nó xuất toàn bộ ở mức cao thì ở d1 và d2 nó ko dc ak. mà tại sao lại như vậy
hướng dân giúp e là cho nó xuất dc vs e dùng CCS de lập trình. e dính kèm cái code vs mạch thử lun
trong code khi case = 2 thì khi bấm c2 và c3 thì d1 d2 lại xuất mức 1 e không biết minh có sai chổ nào ko --http://sdrv.ms/15P4Ron --day là file mạch
*/
#include <16F877A.h>
#fuses NOWDT,PUT,XT,NOPROTECT
#use delay(clock=20000000) //su dung thach anh tan so 20MHz
int8 count,time1,time2,l1,l2,l3,l4,i,t2,t3,t1,d;
unsigned char LED[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0}; //Ma led 7 thanh
unsigned char den[6]={0x21,0X22,0x0C,0x14};
//Chuong trinh ngat TIMER0 theo chu ki 1s giam thoi gan xuong 1 don vi
void main()
{ int8 cd,v,t,j,kt, l1,l2,z,l;
set_tris_c(0xff);
set_tris_b(0x00);
set_tris_e(0x00);
set_tris_d(0x00);
set_tris_a(0x00);
if(input(pin_c5)==0)l= read_eeprom(0x20);
else {
if(input(pin_c5)==1)l= read_eeprom(0x21);}
cd=0;
while(true) //thiet lap thoi gian cho he thong
{
if(input(pin_c0)==0){
v=1;}
if(input(pin_c0)==1 && v==1)
{v=0;
cd++;
}
if(cd==3){cd=0;}
switch (cd){
case 0 :
output_high(pin_e0);
output_low(pin_e2);
output_low(pin_e1);
output_d(0xff);
output_b(0xff);
break;
case 1:
output_high(pin_e1);
output_low(pin_e0);
output_low(pin_d0);
output_low(pin_d1);
output_low(pin_d2);
output_low(pin_d3);
output_a(0x12);
if(input(pin_c2)==0)
{kt=kt+5;
delay_ms(200);
}
if(input(pin_c3)==0)
{
kt++;
delay_ms(200);
}
if(input(pin_c4)==0)
{
kt=kt-5;
delay_ms(200);
}
if(kt>99){kt=0;}
l1 = kt%10;
l2 = kt/10;
if(l1==10) l1=0;
if(l1==10) l2=0;
output_b(LED[l2]);
output_high(pin_d4);
delay_ms(2);
output_low(pin_d4);
output_b(LED[l1]);
output_high(pin_d5);
delay_ms(2);
output_low(pin_d5);
if(input(pin_c5)==0 && input(pin_c1)== 0)
{
write_eeprom(0x20,kt);
}
else
{ if(input(pin_c5)==1 && input(pin_c1)== 0)
{
write_eeprom(0x21,kt);
}
}
break;
case 2 :
output_high(pin_e2);
output_low(pin_e1);
if(input(pin_c2)==0)
{
output_a(0x0c);
delay_ms(50);
}
if(input(pin_c3)==0)
{
output_a(0x21);
delay_ms(50);
}
if(input(pin_c4)==0)
{
output_a(0x0c);
delay_ms(50);
}
break;}
}
}
hướng dân giúp e là cho nó xuất dc vs e dùng CCS de lập trình. e dính kèm cái code vs mạch thử lun
trong code khi case = 2 thì khi bấm c2 và c3 thì d1 d2 lại xuất mức 1 e không biết minh có sai chổ nào ko --http://sdrv.ms/15P4Ron --day là file mạch
*/
#include <16F877A.h>
#fuses NOWDT,PUT,XT,NOPROTECT
#use delay(clock=20000000) //su dung thach anh tan so 20MHz
int8 count,time1,time2,l1,l2,l3,l4,i,t2,t3,t1,d;
unsigned char LED[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0}; //Ma led 7 thanh
unsigned char den[6]={0x21,0X22,0x0C,0x14};
//Chuong trinh ngat TIMER0 theo chu ki 1s giam thoi gan xuong 1 don vi
void main()
{ int8 cd,v,t,j,kt, l1,l2,z,l;
set_tris_c(0xff);
set_tris_b(0x00);
set_tris_e(0x00);
set_tris_d(0x00);
set_tris_a(0x00);
if(input(pin_c5)==0)l= read_eeprom(0x20);
else {
if(input(pin_c5)==1)l= read_eeprom(0x21);}
cd=0;
while(true) //thiet lap thoi gian cho he thong
{
if(input(pin_c0)==0){
v=1;}
if(input(pin_c0)==1 && v==1)
{v=0;
cd++;
}
if(cd==3){cd=0;}
switch (cd){
case 0 :
output_high(pin_e0);
output_low(pin_e2);
output_low(pin_e1);
output_d(0xff);
output_b(0xff);
break;
case 1:
output_high(pin_e1);
output_low(pin_e0);
output_low(pin_d0);
output_low(pin_d1);
output_low(pin_d2);
output_low(pin_d3);
output_a(0x12);
if(input(pin_c2)==0)
{kt=kt+5;
delay_ms(200);
}
if(input(pin_c3)==0)
{
kt++;
delay_ms(200);
}
if(input(pin_c4)==0)
{
kt=kt-5;
delay_ms(200);
}
if(kt>99){kt=0;}
l1 = kt%10;
l2 = kt/10;
if(l1==10) l1=0;
if(l1==10) l2=0;
output_b(LED[l2]);
output_high(pin_d4);
delay_ms(2);
output_low(pin_d4);
output_b(LED[l1]);
output_high(pin_d5);
delay_ms(2);
output_low(pin_d5);
if(input(pin_c5)==0 && input(pin_c1)== 0)
{
write_eeprom(0x20,kt);
}
else
{ if(input(pin_c5)==1 && input(pin_c1)== 0)
{
write_eeprom(0x21,kt);
}
}
break;
case 2 :
output_high(pin_e2);
output_low(pin_e1);
if(input(pin_c2)==0)
{
output_a(0x0c);
delay_ms(50);
}
if(input(pin_c3)==0)
{
output_a(0x21);
delay_ms(50);
}
if(input(pin_c4)==0)
{
output_a(0x0c);
delay_ms(50);
}
break;}
}
}
Comment