![]() |
|
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 |
|
|
|
|
#1 |
|
Đệ tử 1 túi
Tham gia ngày: Jun 2009
Bài gửi: 18
: |
Clock CCS 16f877A
Mình cần 1 code đồng hồ dùng Pic, đơn thuần chỉ hiển thị phút giây trên led 7 đoạn để tham khảo .Bác nào có giúp mình nhé. Thanks
|
|
|
|
|
|
#2 |
|
Đệ tử 1 túi
Tham gia ngày: Jun 2009
Bài gửi: 18
: |
Mấy bác có bài này không giúp em với
|
|
|
|
|
|
#3 |
|
Đệ tử 7 túi
Tham gia ngày: May 2009
Bài gửi: 242
: |
Code:
#include<16f877a.h>
#include<def_877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#device *=16 ADC=8
#use delay(clock=20000000)
int16 count;
int8 h10,h1,m10,m1,s10,s1,i;//khai bao bien gio,phut,giay
#int_TIMER0
void timer0()
{
set_timer0(6);
++count;
if(count==5000)
{
++s1;
if(s1==9){
s1=0;
++s10;
if(s10==5)
{
s10=0;
++m1;
if(m1==9){
++m10;
m1=0;
if(m10==5){
m10=0;
++h1;
if(h1==2){h1=0;
++h10;
if(h10==1){h10=0;}
}
}
}
}
}
count=0;
}
}
void main()
{
trisd=0x00;
trise=0x00;
s1=0;
s10=0;
m1=0;
m10=0;
h1=0;
h10=0;
enable_interrupts(int_timer0);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4);
enable_interrupts(global);
while(1)
{
i=0;
for(i=0;i<=5;i++)
{
porte=i;
switch(i)
{
case 0: portd=h10;break;
case 1: portd=h1;break;
case 2: portd=m10;break;
case 3: portd=m1;break;
case 4: portd=s10;break;
case 5: portd=s1;break;
}
}
}
}
////////////////////////////////////////////////////////
thay đổi nội dung bởi: phamminhtuan, 31-07-2009 lúc 09:32 AM. Lý do: Đưa code vào thẻ [code] (#) |
|
|
|
|
|
#4 |
|
Đệ tử 1 túi
Tham gia ngày: Jun 2009
Bài gửi: 20
: |
mình có làm bài này mà sao ko chạy trên proteus,các bác giúp cho !!!...
#include <16f877a.h> #fuses HS,NOWDT #use delay(clock=4000000) #byte trisb=0x86 #byte portb=0x06 #BYTE TRISD=0X88 #BYTE PORTD=0X08 char bang_ma[10]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0}; char n1,n2,n3,n4; char sec,min,h; #int_timer1 void ngat_TMR1() { int time,count; set_timer1(15535); time++; if(time=1);//dc 1/2s //<thuc hien cong viec> { count++; if(count==1) { portb=bang_ma[N1]; OUTPUT_LOW(PIN_A0); DELAY_MS(10); OUTPUT_HIGH(PIN_A0); } if(count==2) { portb=bang_ma[N2]; OUTPUT_LOW(PIN_A1); DELAY_MS(10); } if(count==3) { portD=bang_ma[N3]; OUTPUT_LOW(PIN_A4);DELAY_MS(10); OUTPUT_HIGH(PIN_A4); } if(count==4) { portD=bang_ma[N4]; OUTPUT_LOW(PIN_A5); DELAY_MS(10); } count==0; } time==0; } //SU DUNG HAM NGAT TIMER0 DE HIEN THI #INT_TIMER0 void ngat_timer0() { int dem; set_timer0(15536); //mac dinh gia tri ban dau cho TMR0 dem++; if(dem==20) //20*50000=1s { dem=0; sec++; } if(sec==60) { sec=0; min++; } if(min==60) { min=0; h++; } if(h==24) { h=0; } } VOID main(void) { trisb=0x00; portb=0xff; TRISD=0X00; PORTD=0XFF; setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); set_timer0(15536); enable_interrupts(int_timer0); enable_interrupts(global); setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); set_timer1(15535); enable_interrupts(int_timer1); enable_interrupts(global); N1=H/10; N2=H%10; N3=SEC/10; N4=SEC%10; while(1) { NGAT_TIMER0(); N1=H/10; N2=H%10; N3=SEC/10; N4=SEC%10; ngat_TMR1(); } } |
|
|
|
![]() |
|
|