0% found this document useful (0 votes)
6 views

code vi điều khiển

Uploaded by

voduythieu91
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

code vi điều khiển

Uploaded by

voduythieu91
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 60

#include <16F877A.

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()
{

giochuc = gio / 10;


giodv = gio % 10;

phutchuc = phut / 10;


phutdv = phut % 10;

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()
{

giochuc = giosetup / 10;


giodv = giosetup % 10;

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;

phutchuc = phutsetup / 10;


phutdv = phutsetup % 10;

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++;

if (giay > 59)


{
giay = 0;
phut++;

if (phut > 59)


{
phut = 0;
gio++;
if (gio > 23) gio = 0;
}
}
}
}
}

#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 (input (pin_b4) == 1&&input (pin_b5) == 0)


{
giosetup--;
if (giosetup < 0) giosetup = 23;
while (input (pin_b5) == 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 ();
}

if (input (pin_b4) == 1 && input (pin_b5) == 0)


{
phutsetup--;
if (phutsetup < 0) phutsetup = 59;
while (input (pin_b5) == 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();
}
}
}

1/ Code chớp tắt 8 led 10 lần


void choptat()
{
for(int8 i=0;i<10;i++)
{
output_c(0xff);
delay_ms(100);
output_c(0x00);
delay_ms(100);
}
}

2/ code dịch phải // int8 a;

void dichphai(a)
{ a=0x80;
for(int8 i=0;i<8;i++)
{
output_c(a);
delay_ms(200);
a=a>>1;
}
}

3/ code dịch trái // int8 a;

void dichtrai(a)
{ a=0x01;
for(int8 i=0;i<8;i++)
{
output_c(a);
delay_ms(200);
a=a<<1;
}
}

4/ sáng dần // int8 a;

void sangdan(a)
{ a=0x01;
for(int8 i=0;i<8;i++)
{
output_c(a);
delay_ms(200);
a=a<<1|0x01;
}
}

5/tắt dần //output_c(0xff)

void tatdan(a)
{ a=0xff;
for(int8 i=0;i<8;i++)
{
output_c(a);
delay_ms(200);
a=a<<1;
}
}

6/sáng từ trong ra // int8 x,y;

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;
}
}

7/ ngoài vào // int8 x,y;

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;
}
}

8/ ngoài vào + trong ra // int8 x,y;

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;
}
}

9/sáng dồn trái


#include <16F877A.h>
#FUSES NOWDT,HS
#device ADC=10
#use delay(clock=20000000)
if(z==2)void main()
{
set_tris_c(0x00);
output_c(0x00);
set_tris_b(0xff);
int8 v,b,n;
while(true)
{
sangdontrai(v,b,n);
}
}

10/ sáng dồn phải


#include <16F877A.h>
#FUSES NOWDT,HS
#device ADC=10
#use delay(clock=20000000)
void sangdonphai(v,b,n)
{v=0x00;
for(int8 i=0;i<9;i++)
{
n=0x80;
for(int8 j=0;j<8-i;j++)
{
b=v+n;
output_c(b);
delay_ms(100);
n=n>>1;
}
v=b;
}
}
void main()
{
set_tris_c(0x00);
output_c(0x00);
set_tris_b(0xff);
int8 v,b,n;
while(true)
{
sangdonphai(v,b,n);
}
}

11/ dịch trái 2 led // int8 a;


void dichtrai2led(a)
{ a=0x03;
for(int8 i=0;i<8;i++)
{
output_c(a);
delay_ms(50);
a=a<<1;
}
}

12/ sáng vờn phai


#include <16F877A.h>
#FUSES NOWDT,HS
#device ADC=10
#use delay(clock=20000000)
void sangduoi(y)
{
y=0x7f;
output_c(y);
delay_ms(200);
for(int8 i=0;i<8;i++)
{
y=(y>>1)|0x80;
output_c(y);
delay_ms(200);
}
}
void main()
{
set_tris_c(0x00);
output_c(0x00);
set_tris_b(0xff);
int8 y;
while(true)
{
sangduoi(y);
}
}
If
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();
}
}
}

13/ swicth case


#include <16F877A.h>
#FUSES NOWDT,HS
#device ADC=10
#use delay(clock=20000000)
void sangduoi(y)
{
y=0x7f;
output_c(y);
delay_ms(200);
for(int8 i=0;i<8;i++)
{
y=(y>>1)|0x80;
output_c(y);
delay_ms(200);
}
}
void sangdan(a)
{ a=0x01;
for(int8 i=0;i<8;i++)
{
output_c(a);
delay_ms(200);
a=a<<1|0x01;
}
}
void main()
{
set_tris_c(0x00);
output_c(0x00);
set_tris_b(0xff);
int8 y,a,i;
while(true)
{
if(input(pin_b0)==0)
{
delay_ms(10);
while(input(pin_b0)==0){}
if(i>3)i=0;
switch (i++)
{
case 1:
sangduoi(y);
break;
case 2:
sangdan(a);
break;
case 3:
output_c(0x00);
break;
}

//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);

Code tách số và quét led + nhấp nháy


#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};
unsigned int8 maledcham[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x79,0x00,0x10};
int16 nghin=0,tram=0,chuc=0,dv=0;
int16 slq=0;
int16 i=0;
int16 so=199;
void tachso(so)
{
nghin=so/1000;
tram=so%1000/100;
chuc=so%100/10;
dv=so%10;
}
void quetled7doan(int16 slq)
{
for(i=0;i<slq;i++)
{
if(nghin==0)
{
output_low(pin_a1);
output_d(0xff);
delay_ms(4);
output_high(pin_a1);
}
else
{
output_low(pin_a1);
output_d(maledcham[nghin]);
delay_ms(4);
output_high(pin_a1);
}
if((nghin==0)&&(tram==0))
{
output_low(pin_a2);
output_d(0xff);
delay_ms(4);
output_high(pin_a2);
}
else
{
output_low(pin_a2);
output_d(maled[tram]);
delay_ms(4);
output_high(pin_a2);
}
if((nghin==0)&&(tram==0)&&(chuc==0))
{
output_low(pin_a3);
output_d(0xff);
delay_ms(4);
output_high(pin_a3);
}
else
{
output_low(pin_a3);
output_d(maled[chuc]);
delay_ms(4);
output_high(pin_a3);
}

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);
}
}

Code tự tăng số không cần


timer
#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=0;
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)
{
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);
}
}
}
}
}
}
}

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);
}

chớp tắt timer


void choptat_timer()
{
set_timer0(6);
demtran=demtran+1;
if(demtran==2500)
{
output_c(0xff);
}
if(demtran==5000)
{
output_c(0x00);
demtran=0;
}
}

You might also like