Đếm từ 0 đến 99 sử dụng 2 nút nhấn with CCS

8:20:00 AM
Chào các bạn trong bài đăng này mình sẽ hướng dẫn các bạn đếm từ 0 - 99 sử dụng 2 nút nhấn. Một nút nhấn tăng và một nút nhấn giảm.

Ảnh mô phỏng protues.



Đây là code chương trình.

#include <16f877a.h>
#include <def_877a.h>
#fuses HS,NOLVP,NOWDT,PUT
#use delay(clock=8000000)
int maled[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int giatri;
int chuc,donvi;
#bit led1 =porta.1
#bit led2 =porta.2
void tachso()
{
chuc=(giatri)/10;
donvi=(giatri)%10;
}
void hienthi()
{
portb=maled[chuc];
led2=0;
delay_ms(1);
led2=1;

portb=maled[donvi];
led1=0;
delay_ms(1);
led1=1;
}
void main()
{
trisa=0x00;
trisb=0x00;
porta=0xff;
trisc=0xff;
while(true)
{
tachso();
hienthi();

if(!rc0)
{
delay_ms(10);
while(!rc0);
giatri++;
if(giatri>10)
{
giatri=0;
}
}
else
if(!rc1)
{
delay_ms(10);
while(!rc1);
giatri--;
if(giatri<=0)
{
giatri=99;
}
}
}
}

Link download project.
http://adf.ly/11512871/0-99-button

Share this

Related Posts

Previous
Next Post »

3 nhận xét

Write nhận xét
10/05/2015 delete

Em mới tập tành vào học pic, gặp bài này không biết làm, nhờ mọi người giúp đỡ e với. Em cảm ơn !
Đề Bài:
a. Sử dụng timer ( tự chọn ) , viết chương trình ( C) tạo xung vuông với tần số 200KHz. Khi nhấn nút số 1, xung phát ra với chu kỳ nhiệm vụ là 50%, khi ấn nút 2 , xung phát ra với chu kỳ nhiệm vụ 80%
b. Thực hiện câu a dùng hàm delay thay cho timer

Reply
avatar
10/05/2015 delete

Trước tiên e phải tạo xung bằng timer đã. Rồi thêm nút nhấn giống trên bài đăng này thay phần điều kiện vào thôi.

Reply
avatar
10/05/2015 delete

e thử tham khảo cách tạo xung này thử nha a không rành về ccs lắm nên không biết đúng không nữa. E thêm vào nút nhấn với thay đổi thông số cài đặt cho timer là được.
#include <16f877a.h>
#include
#fuses HS,NOLVP,NOWDT,PUT,XT
#use delay(clock=4000000)
int i;
void main()
{
TMR1IF=0;
setup_timer_1(T1_INTERNAL | T1_DIV_BY_2);
set_timer1(24280);
trisb=0x00;
portb=0x00;
while(true)
{
while(TMR1IF==0)
{
i++;
TMR1IF=0;
set_timer1(24280);
if(i==2)
{
delay_ms(10);
rb0 = !rb0;
}
}
}
}

Reply
avatar