code vi điều khiển
code vi điều khiển
h>
#device ADC=10
#use delay(crystal=20000000)
#fuses nowdt, hs
int8 maled[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int8 dem=0;int16 demtran=0;
signed int8 gio=0,phut=0,giay=0;
int1 i=0;
int8 dem1=0;
signed int8 giosetup=0,phutsetup=0;
int8 giochuc, giodv, phutchuc, phutdv;
void tsql()
{
output_low (pin_a1) ;
output_d (maled[giochuc]) ;
delay_ms (1) ;
output_high (pin_a1) ;
output_low (pin_a2) ;
output_d (maled[giodv]) ;
output_bit (pin_d7, i) ;
delay_ms (1) ;
output_high (pin_a2) ;
output_low (pin_a3) ;
output_d (maled[phutchuc]) ;
delay_ms (1) ;
output_high (pin_a3) ;
output_low (pin_a4) ;
output_d (maled[phutdv]) ;
delay_ms (1) ;
output_high (pin_a4) ;
}
void set_gio()
{
output_low (pin_a1) ;
output_d (0x92) ;
delay_ms (1) ;
output_high (pin_a1) ;
output_low (pin_a2) ;
output_d (0x89) ;
output_bit(pin_d7,i);
delay_ms (1) ;
output_high (pin_a2) ;
output_low (pin_a3) ;
output_d (maled[giochuc]) ;
delay_ms (1) ;
output_high (pin_a3) ;
output_low (pin_a4) ;
output_d (maled[giodv]) ;
delay_ms (1) ;
output_high (pin_a4) ;
}
void set_phut()
{
int8 phutchuc, phutdv;
output_low (pin_a1) ;
output_d (0x92) ;//b10001001
delay_ms (1) ;
output_high (pin_a1) ;
output_low (pin_a2) ;
output_d (0x0c) ;//b10001100
output_bit(pin_d7,i);
delay_ms (1) ;
output_high (pin_a2) ;
output_low (pin_a3) ;
output_d (maled[phutchuc]) ;
delay_ms (1) ;
output_high (pin_a3) ;
output_low (pin_a4) ;
output_d (maled[phutdv]) ;
delay_ms (1) ;
output_high (pin_a4) ;
}
#int_TIMER1
void ngat_timer1()
{
set_timer1 (40536) ;
demtran++;
if (demtran == 25)
{
demtran = 0;
i = ~i;
dem++;
if (dem == 2)
{
dem = 0;
giay++;
#int_EXT
void ngat_b0()
{
if (input (pin_b0) == 0)
{
enable_interrupts (int_TIMER1) ;
dem1 = dem1 + 1;
if (dem1 > 2) dem1 = 0;
while (input (pin_b0) == 0)
{
if (dem1 == 0) tsql ();
if (dem1 == 1) set_gio ();
if (dem1 == 2) set_phut ();
}
}
}
#int_RB
void ngat_portb()
{
if (dem1 == 1)
{
if (input (pin_b4) == 0&&input (pin_b5) == 1)
{
giosetup++;
if (giosetup > 23) giosetup = 0;
while (input (pin_b4) == 0) set_gio ();
}
if (dem1 == 2)
{
if (input (pin_b4) == 0 && input (pin_b5) == 1)
{
phutsetup++;
if (phutsetup > 59) phutsetup = 0;
while (input (pin_b4) == 0) set_phut ();
}
void main()
{
set_tris_a(0x01);
set_tris_b(0xff);
set_tris_c(0x00);
set_tris_d(0x00);
output_c(0x00);
output_d(0x00);
output_high (pin_a1) ;
output_high (pin_a2) ;
output_high (pin_a3) ;
output_high (pin_a4) ;
setup_timer_1 (T1_INTERNAL|T1_DIV_BY_4) ;
set_timer1 (40536) ;
enable_interrupts (GLOBAL) ;
enable_interrupts (int_TIMER1) ;
enable_interrupts (int_EXT) ;
ext_int_edge (H_TO_L) ;
while (TRUE)
{
if (dem1 == 0)
{
tsql ();
disable_interrupts(int_rb);
}
if (dem1 == 1)
{
gio=giosetup;
set_gio ();
enable_interrupts (int_rb) ;
}
if (dem1 == 2)
{
phut=phutsetup;
set_phut ();
enable_interrupts (int_rb) ;
}
}
}
#include <16F877A.h>
#FUSES NOWDT,HS
#device ADC=10
#use delay(clock=20000000)
void choptat()
{
for(int8 i=0;i<8;i++)
{
output_c(0xff);
delay_ms(100);
output_c(0x00);
delay_ms(100);
}
}
void sangdon(v,b,n)
{v=0x00;
for(int8 i=0;i<9;i++)
{
n=0x01;
for(int8 j=0;j<8-i;j++)
{
b=v+n;
output_c(b);
delay_ms(100);
n=n<<1;
}
v=b;
}
}
void sangtrongra(x,y)
{
x=0x10;y=0x08;
for(int8 i=0;i<4;i++)
{
output_c(x|y);
delay_ms(300);
x=x<<1;y=y>>1;
}
}
void sangngoaivao(l,m)
{
l=0x80;m=0x01;
for(int8 i=0;i<4;i++)
{
output_c(l|m);
delay_ms(300);
m=m<<1;l=l>>1;
}
}
void main()
{
set_tris_c(0x00);
set_tris_b(0xff);
output_c(0x00);
int8 n,v,b,l,m;
int8 x,y,z=0;
while(true)
{
if(input(pin_b0)==0)
{
delay_ms(10);
while(input(pin_b0)==0){}
z++;
if(z>4)z=1;
if(z==1)
sangtrongra(x,y);
if(z==2)
sangngoaivao(l,m);
if(z==3)
sangdon(v,b,n);
if(z==4)
choptat();
}
}
}
void dichphai(a)
{ a=0x80;
for(int8 i=0;i<8;i++)
{
output_c(a);
delay_ms(200);
a=a>>1;
}
}
void dichtrai(a)
{ a=0x01;
for(int8 i=0;i<8;i++)
{
output_c(a);
delay_ms(200);
a=a<<1;
}
}
void sangdan(a)
{ a=0x01;
for(int8 i=0;i<8;i++)
{
output_c(a);
delay_ms(200);
a=a<<1|0x01;
}
}
void tatdan(a)
{ a=0xff;
for(int8 i=0;i<8;i++)
{
output_c(a);
delay_ms(200);
a=a<<1;
}
}
void trongra(x,y)
{ x=0x10;y=0x08;
for(int8 i=0;i<4;i++)
{
output_c(x|y);
delay_ms(200);
x=x<<1;y=y>>1;
}
}
void ngoaivao(x,y)
{ x=0x80;y=0x01;
for(int8 i=0;i<8;i++)
{
output_c(x|y);
delay_ms(200);
x=x>>1;y=y<<1;
}
}
void ngoaitrong(x,y)
{ x=0x80;y=0x01;
for(int8 i=0;i<8;i++)
{
output_c(x|y);
delay_ms(200);
x=x>>1;y=y<<1;
}
}
//return 1;
}
}
}
14/ defaut
switch (num)
{
case 10: cout<<"It is 10"; break;
case 20: cout<<"It is 20"; break;
case 30: cout<<"It is 30"; break;
default: cout<<"Not 10, 20 or 30"; break;
}
}
#include <16F877A.h>
#FUSES NOWDT,HS
#device ADC=10
#use delay(clock=20000000)
void sole4led()
{
for(int8 i=0;i<3;i++)
{
if(input(pin_b0)==0)break;
if(input(pin_b4)==0)break;
output_c(0b00001111);
delay_ms(500);
output_c(0b11110000);
delay_ms(500);
}
}
void sole2led()
{
for(int8 i=0;i<3;i++)
{
if(input(pin_b0)==0)break;
if(input(pin_b4)==0)break;
output_c(0b00110011);
delay_ms(500);
output_c(0b11001100);
delay_ms(500);
}
}
void dichtrai(a)
{ a=0x01;
for(int8 i=0;i<8;i++)
{
if(input(pin_b0)==0)break;
if(input(pin_b4)==0)break;
output_c(a);
delay_ms(1125);
a=a<<1;
}
}
void dichphai(b)
{ b=0x80;
for(int8 i=0;i<8;i++)
{
if(input(pin_b0)==0)break;
if(input(pin_b4)==0)break;
output_c(b);
delay_ms(1125);
b=b>>1;
}
}
void ngoaitrong(x,y)
{ for(int8 j=0;j<3;j++)
{
x=0x80;y=0x01;
for(int8 i=0;i<8;i++)
{
if(input(pin_b0)==0)break;
if(input(pin_b4)==0)break;
output_c(x|y);
delay_ms(750);
x=x>>1;y=y<<1;
}
}
}
void sangdanngoaitrong(v,m,n)
{m=0x80;n=0x01;v=0x00;
for(int8 j=0;j<1;j++)
{
for(int8 i=0;i<4;i++)
{
if(input(pin_b0)==0)break;
if(input(pin_b4)==0)break;
v=m+n;
output_c(v);
delay_ms(1125);
m=m>>1|0x80;
n=n<<1|0x01;
}
}
}
void tatdantrongngoai(f,g,h)
{g=0xe0;h=0x07;f=0x00;
for(int8 j=0;j<1;j++)
{
for(int8 i=0;i<4;i++)
{
if(input(pin_b0)==0)break;
if(input(pin_b4)==0)break;
f=g+h;
output_c(f);
delay_ms(1125);
g=g<<1;
h=h>>1;
}
}
}
//!void sangdonngoaitrong()
//!{
//!if(input(pin_b0)==0)break;
//!if(input(pin_b4)==0)break;
//!output_c(0b10000001);
//!delay_ms(500);
//!output_c(0b00000000);
//!delay_ms(500);
//!output_c(0b10100101);
//!delay_ms(500);
//!output_c(0b00000000);
//!delay_ms(500);
//!output_c(0b01011010);
//!delay_ms(500);
//!output_c(0b00000000);
//!delay_ms(500);
//!}
void sangdonngoaitrong1(u,q,o,p,t,r,k)
{
u=0x00;p=0x00;k=0x00;
for(int8 i=0;i<5;i++)
{
o=0x80;r=0x01;
for(int8 j=0;j<4-i;j++)
{
if(input(pin_b0)==0)break;
if(input(pin_b4)==0)break;
q=u+o;t=p+r;k=q+t;
output_c(k);
delay_ms(1500);
o=o>>1;r=r<<1;
}
u=q;p=t;
}
}
void main()
{
set_tris_c(0x00);
output_c(0x00);
set_tris_b(0xff);
int8 a,b,x,y;
int8 v,m,n;
int8 f,g,h;
int8 u,i,o,p,t,r,k;
signed int8 z=0;
while(true)
{
if(input(pin_b0)==0)
{
delay_ms(10);
while(input(pin_b0)==0){}
z=z+1;
}
if(input(pin_b4)==0)
{
delay_ms(10);
while(input(pin_b4)==0){}
z=z-1;
}
if(z==4)z=0;
if(z==-1)z=3;
//! if(z==0)
//! {
//! sole4led();
//! sole2led();
//! }
//! if(z==1)
//! {
//! dichtrai(a);
//! dichphai(b);
//! ngoaitrong(x,y);
//! }
//! if(z==2)
//! {
//! sangdanngoaitrong(v,m,n);
//! }
//! if(z==3)
//! {
//!
//! }
switch (z)
{
case 0:
{
sole4led();
sole2led();
}
break;
case 1:
{
dichtrai(a);
dichphai(b);
ngoaitrong(x,y);
}
break;
case 2:
{
sangdanngoaitrong(v,n,m);
tatdantrongngoai(f,g,h);
}
break;
case 3:
{
//sangdonngoaitrong();
sangdonngoaitrong1(u,i,o,p,t,r,k);
}
break;
}
}
}
Timer0
#include <16F877A.h>
#device ADC=8
#fuses HS, NOWDT
#use delay(crystal=20000000)
#BIT TMR0IF=0x8B.2 //timer1 BIT TMR1IF=0x0c.0
int8 maled[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int16 demtran, dem;
void main()
{
set_tris_c(0x00);
output_c(0x00);
set_tris_d(0x00);
output_d(0xff);
set_tris_a(0x00);
output_a(0xff);
set_tris_b(0xff);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4);
set_timer0(6);
TMR0IF=0; demtran=0;
while(TRUE)
{
if(TMR0IF==1)
{
demtran++;
if(demtran==2500)
{
output_toggle(pin_C3);
demtran=0;
}
TMR0IF=0;
set_timer0(6);
}
if(input(pin_B0)==0)
{
dem++;
if(dem>9) dem=0;
}
output_d(maled[dem]);
output_low(pin_A1);
}
}
Mã led
#include <16F877A.h>
#device ADC = 10
#FUSES NOWDT, HS
#use delay(clock=20000000)
int maled[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int16 gtADC;
int8 Doam_Int,Tram,Chuc,Dv;
float Doam;
Void Tachso_quetled()
{
Tram=Doam_Int/100;
Chuc=Doam_Int/10%10;
Dv=Doam_Int%10;
output_low(PIN_a2);
output_d(maled[Tram]);
delay_ms(10);
output_high(PIN_a2);
output_low(PIN_a3);
output_d(maled[Chuc]);
delay_ms(10);
output_high(PIN_a3);
output_low(PIN_a4);
output_d(maled[Dv]);
delay_ms(10);
output_high(PIN_a4);
}
Void main()
{
Set_tris_a(0xff);
Set_tris_d(0x00);
Set_tris_c(0x00);
Set_tris_d(0x00);
Output_a(0xff);
Output_c(0x00);
Output_d(0xff);
Setup_adc_ports(AN0_AN1_AN2_AN4_VSS_VREF);
Setup_adc(ADC_CLOCK_DIV_2); //T=0.4us
Set_adc_channel(0);
While(1)
{
gtADC = read_adc();
Doam= (float)((gtADC*100.0)/1023.0);
Doam_Int = (int8) Doam;
Tachso_quetled();
If (Doam < 25) output_high(pin_C2);
Else output_low(pin_C2);
}
}
Adc
include <16F877A.h>
#device ADC=10
#fuses HS, NOWDT
#use delay(crystal=20000000)
int8 maled[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int8 nghin, tram, chuc, dv;
int16 gtADC, V_int;
float V;
void ts_ql(int16 a)
{
nghin=a/1000;
tram=a%1000/100;
chuc=a%100/10;
dv=a%10;
output_d(maled[nghin]);
output_low(pin_D7);
output_low(pin_A1);
delay_ms(1);
output_high(pin_A1);
output_d(maled[tram]);
output_low(pin_A2);
delay_ms(1);
output_high(pin_A2);
output_d(maled[chuc]);
output_low(pin_A3);
delay_ms(1);
output_high(pin_A3);
output_d(maled[dv]);
output_low(pin_A4);
delay_ms(1);
output_high(pin_A4);
}
void main()
{
set_tris_c(0x00);
output_c(0x00);
set_tris_d(0x00);
output_d(0xff);
set_tris_a(0x01);
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_DIV_4);
set_adc_channel(0);
while(TRUE)
{
gtADC=read_adc();
V=(float)(gtADC*5.0/1023.0);
V_int=(int16)(V*1000);
ts_ql(V_int);
}
}
Ngắt ngoài
#include <16F877A.h>
#device ADC=10
#FUSES NOWDT,HS
#use delay(crystal=20000000)
#bit TMR1IF=0x0C.0
int8 maled[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int16 i,a,mode,demtran,gtadc;
int8 nghin,tram,chuc,dv,dich;
void kiemtra()
{
output_low(pin_A1);
output_low(pin_A2);
output_low(pin_A3);
output_low(pin_A4);
for(i=0;i<10;i++)
{
output_d(maled[i]);
output_low(pin_D7);
delay_ms(200);
}
output_d(0xff);
}
void ts_ql(int16 a)
{
nghin=a/1000;
tram=a%1000/100;
chuc=a%100/10;
dv=a%10;
output_low(pin_A1);
output_d(maled[nghin]);
delay_ms(5);
output_high(pin_A1);
output_low(pin_A2);
output_d(maled[tram]);
delay_ms(5);
output_high(pin_A2);
output_low(pin_A3);
output_d(maled[chuc]);
delay_ms(5);
output_high(pin_A3);
output_low(pin_A4);
output_d(maled[dv]);
delay_ms(5);
output_high(pin_A4);
}
#INT_TIMER1
void ngatTimer1()
{
demtran++;
if(demtran==20)
{
if(mode==1)
{
dich=dich<<1;
if (dich==0) dich=0x01;
output_c(dich);
}
if(mode==2)
{
dich=dich>>1;
if (dich==0) dich=0x80;
output_c(dich);
}
if(mode==3)
{
output_toggle(pin_C4);
}
demtran=0;
}
TMR1IF=0;
set_timer1(15536);
}
#INT_EXT
void ngatRB0()
{
mode=1;
while(input(pin_B0)==0)
{
ts_ql(gtadc);
}
}
#INT_RB
void ngatPortB()
{
if(input(pin_B4)==0)
{
mode=2;
while(input(pin_B4)==0)
{
ts_ql(gtadc);
}
}
if(input(pin_B5)==0)
{
mode=3;
while(input(pin_B5)==0)
{
ts_ql(gtadc);
}
output_c(0x00);
}
}
void main()
{
set_tris_a(0x01);
set_tris_d(0x00);
set_tris_c(0x00);
set_tris_b(0xff);
output_c(0x00);
kiemtra();
setup_timer_1(T1_INTERNAL|T1_DIV_BY_2);
set_timer1(15536);
enable_interrupts(int_timer1);
enable_interrupts(int_ext);
enable_interrupts(int_rb);
enable_interrupts(global);
ext_int_edge(H_to_L);
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_DIV_32);
set_adc_channel(0);
demtran=0; dich=0x01; mode=0;
while(TRUE)
{
gtadc=read_adc();
ts_ql(gtadc);
}
}
//!void ngatRB0()
//!{
//! delay_ms(10);
//! while(input(pin_B0)==0)
//! {
//! if(mode==0) ts_ql(gio,phut);
//! if(mode!=0) ts_ql(set_gio,set_phut);
//! dem_tg++;
//! if(dem_tg>=150)
//! {
//! done=1;
//! break;
//! }
//! }
//! if(done==1)
//! {
//! mode++;
//! if(mode>2) mode=0;
//! dem_tg=0; done=0;
//! }
//!}
//!#include <16F877A.h>
//!#device ADC=8
//!#FUSES NOWDT,HS
//!#use delay(crystal=20000000)
//!void main()
//!{
//! set_tris_a(0x00);
//! set_tris_b(0xff);
//! set_tris_d(0x00);
//! set_tris_c(0x00);
//! output_a(0x00);
//! output_d(0x00);
//! while(TRUE)
//! {
//! if((input(pin_B0)==0)||(input(pin_B4)==0)||
(input(pin_B5)==0))
//! {
//! output_c(0xff);
//! }
//! else
//! {
//! output_c(0x00);
//! }
//! }
//!}
//!#include <16F877A.h>
//!#device ADC=8
//!#FUSES NOWDT,HS
//!#use delay(crystal=20000000)
//!#bit TMR1IF=0x0C.0
//!#bit TMR0IF=0x8B.2
//!int8 maled[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//!int16 i,ma,a,j, demtran, demtran2, done;
//!int8 giay, phut, gio, chuc_gio, chuc_phut, dv_gio, dv_phut;
//!signed int8 set_gio, set_phut, mode;
//!
//!void kiemtra()
//!{
//! a=0b11111101;
//! for(j=0;j<4;j++)
//! {
//! output_a(a);
//! ma=0b11111110;
//! for(i=0;i<8;i++)
//! {
//! output_d(ma);
//! ma=(ma<<1)+1;
//! delay_ms(200);
//! }
//! a=(a<<1)+1;
//! }
//! output_a(0xff);
//! output_d(0xff);
//!}
//!void ts_ql(int8 a, int b)
//!{
//! chuc_gio=a/10;
//! dv_gio=a%10;
//! chuc_phut=b/10;
//! dv_phut=b%10;
//!
//! output_low(pin_A1);
//! output_d(maled[chuc_gio]);
//! delay_ms(5);
//! output_high(pin_A1);
//! output_low(pin_A2);
//! output_d(maled[dv_gio]);
//! output_low(pin_D7);
//! delay_ms(5);
//! output_high(pin_A2);
//! output_low(pin_A3);
//! output_d(maled[chuc_phut]);
//! delay_ms(5);
//! output_high(pin_A3);
//! output_low(pin_A4);
//! output_d(maled[dv_phut]);
//! delay_ms(5);
//! output_high(pin_A4);
//!}
//!#INT_TIMER0
//!void ngatTimer0()
//!{
//! demtran2++;
//! if(demtran2==1875)
//! {
//! done=1;
//! demtran2=0;
//! }
//! TMR0IF=0;
//! set_timer0(6);
//!}
//!#INT_TIMER1
//!void ngatTimer1()
//!{
//! demtran++;
//! if(demtran==25)
//! {
//! output_toggle(pin_c1);
//! giay++;
//! if(giay>59)
//! {
//! phut++; giay=0;
//! if(phut>59)
//! {
//! gio++; phut=0;
//! if(gio>23) gio=0;
//! }
//! }
//! demtran=0;
//! }
//! TMR1IF=0;
//! set_timer1(15536);
//!}
//!#INT_EXT
//!void ngatRB0()
//!{
//! delay_ms(10);
//! if(done==1)
//! {
//! mode++;
//! if(mode>2) mode=0;
//! while(input(pin_B0)==0)
//! {
//! if(mode==0) ts_ql(gio,phut);
//! if(mode!=0) ts_ql(set_gio,set_phut);
//! }
//! done=0;
//! }
//!}
//!#INT_RB
//!void ngatPortB()
//!{
//! if(input(pin_B4)==0)
//! {
//! delay_ms(10);
//! if(mode==1)
//! {
//! set_gio++;
//! if(set_gio>23) set_gio=0;
//! }
//! if(mode==2)
//! {
//! set_phut++;
//! if(set_phut>59) set_phut=0;
//! }
//! while(input(pin_B4)==0)
//! {
//! if(mode==0) ts_ql(gio,phut);
//! if(mode!=0) ts_ql(set_gio,set_phut);
//! }
//! }
//! if(input(pin_B5)==0)
//! {
//! delay_ms(10);
//! if(mode==1)
//! {
//! set_gio--;
//! if(set_gio<0) set_gio=23;
//! }
//! if(mode==2)
//! {
//! set_phut--;
//! if(set_phut<0) set_phut=59;
//! }
//! while(input(pin_B5)==0)
//! {
//! if(mode==0) ts_ql(gio,phut);
//! if(mode!=0) ts_ql(set_gio,set_phut);
//! }
//! }
//!}
//!void main()
//!{
//! set_tris_a(0x00);
//! set_tris_d(0x00);
//! set_tris_c(0x00);
//! kiemtra();
//! setup_timer_1(T1_INTERNAL|T1_DIV_BY_2);
//! set_timer1(15536);
//! enable_interrupts(int_timer1);
//! setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32);
//! set_timer0(6);
//! enable_interrupts(int_timer0);
//! enable_interrupts(int_ext);
//! enable_interrupts(int_rb);
//! enable_interrupts(global);
//! ext_int_edge(H_to_L);
//! demtran=0; demtran2=0; done=0;
//! gio=7; phut=0; giay=0;
//! mode=0; set_gio=0; set_phut=0;
//! while(TRUE)
//! {
//! if(mode==0) ts_ql(gio,phut);
//! if(mode!=0) ts_ql(set_gio,set_phut);
//! }
//!}
BRCDD-XNRDH-2MC36-V6DQQ-978J6
Delay bang quet led
Quetled(63);
output_low(pin_a4);
output_d(maled[dv]);
delay_ms(4);
output_high(pin_a4);
}
}
void main()
{
set_tris_d(0x00);
output_d(0xff);
set_tris_a(0x01);
set_tris_c(0x00);
output_c(0x00);
while(true)
{
tachso(so);
output_c(0xff);
quetled7doan(63);
output_c(0x00);
quetled7doan(63);
}
}
Bbann
#include <16F877A.h>
#FUSES NOWDT,HS
#device ADC=10
#use delay(clock=20000000)
unsigned int8 maled[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int16 chuc=0,dv=0;
signed int16 dem;
int16 slq=0;
void tachso(dem)
{
chuc=dem/10;
dv=dem%10;
}
void quetled(slq)
{
for(int8 i=0; i<slq;i++)
{
if(chuc==0)
{
output_low(pin_a1);
output_d(0xff);
delay_ms(4);
output_high(pin_a1);
}
else
{
output_low(pin_a1);
output_d(maled[chuc]);
delay_ms(4);
output_high(pin_a1);
}
output_low(pin_a2);
output_d(maled[dv]);
delay_ms(4);
output_high(pin_a2);
}
}
void main()
{
set_tris_d(0x00);
output_d(0xff);
set_tris_a(0x01);
set_tris_b(0xff);
while(true)
{
if(input(pin_b0)==0)
{dem=0;
delay_ms(10);
if(input(pin_b0)==0)
{
while(true)
{
tachso(dem);
dem=dem+1;
quetled(125);
if(dem>99)
{
while(true)
{
dem=99;
quetled(125);
}
}
}
}
}
if(input(pin_b4)==0)
{dem=99;
delay_ms(10);
if(input(pin_b4)==0)
{
while(true)
{
tachso(dem);
dem--;
quetled(125);
if(dem<0)
{
while(true)
{
dem=0;
quetled(125);
}
}
}
}
}
}
}
Ncbcbcbc
#include <16F877A.h>
#FUSES NOWDT,HS
#device ADC=10
#use delay(clock=20000000)
unsigned int8 maled[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int16 chuc=0,dv=0,tram=0;
signed int16 dem=10;
int16 slq=0;
void tachso(dem)
{
tram=dem/100;
chuc=dem/10%10;
dv=dem%10;
}
void quetled(slq)
{
for(int8 i=0; i<slq;i++)
{
if(dem<0)
{
output_low(pin_a1);
output_d(0xcf);
delay_ms(4);
output_high(pin_a1);
}
else if(tram==0)
{
output_low(pin_a1);
output_d(0xff);
delay_ms(4);
output_high(pin_a1);
}
else
{
output_low(pin_a1);
output_d(maled[tram]);
delay_ms(4);
output_high(pin_a1);
}
if((tram==0)&&(chuc==0))
{
output_low(pin_a2);
output_d(0xff);
delay_ms(4);
output_high(pin_a2);
}
else
{
output_low(pin_a2);
output_d(maled[chuc]);
delay_ms(4);
output_high(pin_a2);
}
output_low(pin_a3);
output_d(maled[dv]);
delay_ms(4);
output_high(pin_a3);
}
}
void main()
{
set_tris_d(0x00);
output_d(0xff);
set_tris_a(0x01);
set_tris_b(0xff);
while(true)
{
quetled(80);
tachso(dem);
}
}
So_int=so_float*1000.0;
tachso(so_int);
quetled(1);
output_c(0xff);
quetled(63);
output_c(0x00);
quetled(63);
bấm tự đếm 2s 1 dv
#include <16F877A.h>
#device ADC=8
#fuses HS, NOWDT
#use delay(crystal=20000000)
#BIT TMR0IF=0x8B.2 //timer1 BIT TMR1IF=0x0c.0
int8 maled[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int16 demtran=0;
int16 so1=0,so2=99,chuc=0,dv=0;
int8 slq=0,g=0;
#int_timer0
void demso()
{
if(g==1)
{
set_timer0(6);
demtran=demtran+1;
if(demtran==5000)
{
demtran=0;
so1=so1+1;
}
}
if(g==2)
{
set_timer0(6);
demtran=demtran+1;
if(demtran==5000)
{
demtran=0;
so2=so2-1;
}
}
}
void tachso1()
{
chuc=so1/10;
dv=so1%10;
}
void tachso2()
{
chuc=so2/10;
dv=so2%10;
}
void quetled(slq)
{
for(int8 i=0;i<slq;i++)
{
if(chuc==0)
{
output_low(pin_a1);
output_d(0xff);
delay_ms(4);
output_high(pin_a1);
}
if(chuc!=0)
{
output_low(pin_a1);
output_d(maled[chuc]);
delay_ms(4);
output_high(pin_a1);
}
output_low(pin_a2);
output_d(maled[dv]);
delay_ms(4);
output_high(pin_a2);
}
}
void main()
{
set_tris_c(0x00);
output_c(0x00);
set_tris_d(0x00);
output_d(0xff);
set_tris_a(0x00);
output_a(0xff);
set_tris_b(0xff);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4);
enable_interrupts(int_timer0);
enable_interrupts(global);
set_timer0(6);
while(TRUE)
{
if(so1==99)
{
so1=0;
}
if(so2==00)
{
so2=99;
}
if(input(pin_b0)==0)
{
delay_ms(10);
if(input(pin_b0)==0){}
g=1;
}
if(g==1)
{demso();
tachso1();
quetled(125);
}
if(input(pin_b4)==0)
{
delay_ms(10);
if(input(pin_b4)==0){}
g=2;
}
if(g==2)
{
demso();
tachso2();
quetled(125);
}
}
}
Timer2
#include <16F877A.h>
#device ADC=8
#fuses HS, NOWDT
#use delay(crystal=20000000) //timer 2 BIT TIMER2IF=0x0c.1
#BIT TMR1IF=0x0c.0 //timer1 BIT TMR1IF=0x0c.0
int8 maled[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int16 demtran=0;
int16 so1=0,so2=99,chuc=0,dv=0;
int8 slq=0,g=0;
#int_timer2
void demso()
{
set_timer2(6);
demtran=demtran+1;
if(demtran==2500)
{
demtran=0;
so1=so1+1;
}
}
void tachso1()
{
chuc=so1/10;
dv=so1%10;
}
void tachso2()
{
chuc=so2/10;
dv=so2%10;
}
void quetled(slq)
{
for(int8 i=0;i<slq;i++)
{
if(chuc==0)
{
output_low(pin_a1);
output_d(0xff);
delay_ms(4);
output_high(pin_a1);
}
if(chuc!=0)
{
output_low(pin_a1);
output_d(maled[chuc]);
delay_ms(4);
output_high(pin_a1);
}
output_low(pin_a2);
output_d(maled[dv]);
delay_ms(4);
output_high(pin_a2);
}
}
void main()
{
set_tris_c(0x00);
output_c(0x00);
set_tris_d(0x00);
output_d(0xff);
set_tris_a(0x00);
output_a(0xff);
setup_timer_2(T2_DIV_BY_4,250,4);
enable_interrupts(int_timer2);
enable_interrupts(global);
set_timer2(6);
while(TRUE)
{
if(so1==99)
so1=0;
demso();
tachso1();
quetled(125);
}
}
Void kiem tra
void kiemtra()
{
a=0b11111101;
for(j=0;j<4;j++)
{
output_a(a);
ma=0b11111110;
for(i=0;i<8;i++)
{
output_d(ma);
ma=(ma<<1)+1;
delay_ms(200);
}
a=(a<<1)+1;
}
output_a(0xff);
output_d(0xff);
}