![]() |
|
Tài trợ cho PIC Vietnam |
||||||||
| Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
|
Ðiều Chỉnh | Xếp Bài |
|
|
#8 | |
|
Đệ tử 7 túi
Tham gia ngày: May 2005
Bài gửi: 258
: |
Trích:
chỉ thế này thôi: Code:
#include <16F877A.h>
#include <def_877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
//#use rs232(baud=9600,parity=N,xmit=PIN_B5,rcv=PIN_B2,bits=9) //Baud_min=4800 Baud_max=115200
//#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
// Dinh nghia cac chan cho ket noi 74595
//#bit SCL=0x08.7
//#bit DATA=0x08.6
//#bit SCK=0x08.5
#define SCL RD5
#define DATA RD6
#define SCK RD7
#byte TRISD =0x88
void quet(unsigned char x);
void DCB(void);
unsigned int donvi,chuc,tram,nghin;
int16 num;
unsigned char ma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//ma led 7
void quet(unsigned char x)
{
int i,j,k,u,temp1,temp2,temp3,temp4;
for(i=0;i<8;i++)
{
temp1=x;//gan bien
temp1=temp1&0x80;//lay ra bit dau tien (bit 7)
if(temp1==0x80)//so sanh bit
DATA=1; //bang 1 thi xuat vao chip =1
else
DATA=0; //nguoc lai bang 0
x*=2; //dich bit lay bit trong so thap
SCK=0; //tao xung tren chan 11
SCK=1; //1 xung dua vào 1 bít
}
}
void chot()
{
SCL=0; //xuat du lieu ra output
SCL=1;
}
void DCB(void)
{
nghin=num/1000;
tram=(num%1000)/100;
chuc=(num%100)/10;
donvi=num%10;
}
void main()
{
trisd=0x00;
num=9875;
DCB();
quet(ma[donvi]);
quet(ma[chuc]);
quet(ma[tram]);
quet(ma[nghin]);
chot();
while(1)
{
}
}
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề. |
|
|
|
|
|
|