PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > dsPIC - Bộ điều khiển tín hiệu số 16-bit

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 22-01-2013, 02:28 PM   #1
messi2410
Nhập môn đệ tử
 
Tham gia ngày: Oct 2012
Bài gửi: 2
:
Thiết kế máy tính cá nhân dùng PIC 16f877a

E đang thực hiên thiết kế máy tính cá nhân dùng VĐK PIC 16f877a, e có code sau nhưng không hiểu sao chạy mô phỏng thì không được, khi nhấn các nút bấm thì không thấy kết quả hiển thị trên LCD,chỉ thấy hiện những ký tự khó hiểu.Đây là đoạn code nhờ các bác kiểm tra giúp:

#include <16f877a.h>
#use delay(clock=20M)
#include <def_877a.h>
#include <lcd_4bit.c>
#include <math.h>


#bit cot1=portB.4
#bit cot2=portB.5
#bit cot3=portB.6
#bit cot4=portB.7

#bit hang1=portB.0
#bit hang2=portB.1
#bit hang3=portB.2
#bit hang4=portB.3
long kq,kq1,kq2,ok,pt,j;

//------------------------------------------------------------------------
//--------------------------Chuong trinh con-----------------------------
//------------------------------------------------------------------------


int8 const tit0[]={"*DO AN HTN*"};
int8 const tit1[]={"-T-T-V-"};
int8 tit2[15];
int8 tit3[15];
int8 i;

void write_line1(long kq,pt){
lcd_putcmd(clear_scr);
lcd_putcmd(line_1);
i=0;j=kq;
while (j!=0)
{
if (j%10) tit2=1;
else tit2=0;
j=j/10;
i++;
}
for (j=i-1;j>=0;j--) lcd_putchar(tit2[j]);
if (pt==1) lcd_putchar('+');
else
if (pt==2) lcd_putchar('-');
else
if (pt==3) lcd_putchar('x');
else
if (pt==4) lcd_putchar(':');
}
void write_line2(long kq){
lcd_putcmd(line_2);
i=0;j=kq;
while (j!=0)
{
tit2=j%10;
j=j/10;
i++;
}
for (j=i-1;j>=0;j--) lcd_putchar(tit2[j]);
}

#int_RB // Chuong trinh ngat Port B
void RB_isr(void){
long kq=0, kq1=0, kq2=0;
if(hang1==1){
if(cot1==1){
if (ok==0)
{ kq1=kq1*10+7;write_line2(kq1); }
else {kq2=kq2*10+7;write_line1(kq1,pt);write_line2(kq2) ; }
}
else if(cot2==1){lcd_putcmd(clear_scr);
if (ok==0)
{ kq1=kq1*10+8;write_line2(kq1);}
else {kq2=kq2*10+8;write_line1(kq1,pt);write_line2(kq2) ;}
}
else if(cot3==1){lcd_putcmd(clear_scr);
if (ok==0)
{ kq1=kq1*10+9;write_line2(kq1);}
else {kq2=kq2*10+9;write_line1(kq1,pt);write_line2(kq2) ;}
}
else if(cot4==1){lcd_putcmd(clear_scr);
if (ok==0)
{
pt=4;
ok=1;
}
else
{
switch (pt)
{
case 1: kq=(kq1+kq2); kq1=kq; break;
case 2: kq=kq1-kq2; kq1=kq; break;
case 3: kq=kq1*kq2; kq1=kq; break;
case 4: kq=kq1/kq2; kq1=kq; break;
}
pt=4;
}
write_line1(kq1,pt);
}
}
else if(hang2==1){
if(cot1==1){

if (ok==0)
{ kq1=kq1*10+4;write_line2(kq1);}
else {kq2=kq2*10+4;write_line2(kq1);}
}
else if(cot2==1){lcd_putcmd(clear_scr);
if (ok==0)
{ kq1=kq1*10+5;write_line2(kq1);}
else {kq2=kq2*10+5;write_line1(kq1,pt);write_line2(kq2) ;}
}
else if(cot3==1){lcd_putcmd(clear_scr);
if (ok==0)
{ kq1=kq1*10+6;write_line2(kq1);}
else {kq2=kq2*10+6;write_line1(kq1,pt);write_line2(kq2) ;}
}
else if(cot4==1){lcd_putcmd(clear_scr);
if (ok==0)
{
pt=3;
ok=1;
}
else
{
switch (pt)
{
case 1: kq=(kq1+kq2); kq1=kq; break;
case 2: kq=kq1-kq2; kq1=kq; break;
case 3: kq=kq1*kq2; kq1=kq; break;
case 4: kq=kq1/kq2; kq1=kq; break;
}
pt=3;
}
write_line1(kq1,pt);
}
}
else if(hang3==1){
if(cot1==1){lcd_putcmd(clear_scr);
if (ok==0)
{ kq1=kq1*10+1;write_line2(kq1);}
else {kq2=kq2*10+1;write_line1(kq1,pt);write_line2(kq1) ;}
}
else if(cot2==1){lcd_putcmd(clear_scr);
if (ok==0)
{ kq1=kq1*10+2;write_line2(kq1);}
else {kq2=kq2*10+2;write_line1(kq1,pt);write_line2(kq1) ;}
}
else if(cot3==1){lcd_putcmd(clear_scr);
if (ok==0)
{ kq1=kq1*10+3;write_line2(kq1);}
else {kq2=kq2*10+3;write_line1(kq1,pt);write_line2(kq1) ;}
}
else if(cot4==1){
lcd_putcmd(clear_scr);
if (ok==0)
{
pt=2;
ok=1;
}
else
{
switch (pt)
{
case 1: kq=(kq1+kq2); kq1=kq; break;
case 2: kq=kq1-kq2; kq1=kq; break;
case 3: kq=kq1*kq2; kq1=kq; break;
case 4: kq=kq1/kq2; kq1=kq; break;
}
pt=2;
}
write_line1(kq1,pt);
}
}
else if(hang4==1){
if(cot1==1){lcd_putcmd(clear_scr);
if (ok==0)
{ kq1=0;write_line2(kq1);}
else {kq2=0;write_line1(kq1,pt);write_line2(kq1);}
}
else if(cot2==1){lcd_putcmd(clear_scr);
if (ok==0)
{ kq1=kq1*10+0;write_line2(kq1);}
else {kq2=kq2*10+0;write_line1(kq1,pt);write_line2(kq1) ;}
}
else if(cot3==1){lcd_putcmd(clear_scr);
if (ok==0) kq=kq1;
else
{
switch (pt)
{
case 1: kq=(kq1+kq2); kq1=kq; break;
case 2: kq=kq1-kq2; kq1=kq; break;
case 3: kq=kq1*kq2; kq1=kq; break;
case 4: kq=kq1/kq2; kq1=kq; break;
}
}
kq1=0;kq2=0;pt=0;ok=0;
write_line2(kq);
}
else if(cot4==1){lcd_putcmd(clear_scr);
if (ok==0)
{
pt=2;
ok=1;
}
else
{
switch (pt)
{
case 1: kq=(kq1+kq2); kq1=kq; break;
case 2: kq=kq1-kq2; kq1=kq; break;
case 3: kq=kq1*kq2; kq1=kq; break;
case 4: kq=kq1/kq2; kq1=kq; break;
}
pt=1;
}
write_line1(kq1,pt);
}
}
}
//------------------------------------------------------------------------
/*------------------------Chuong trinh chinh-------------------------------*/
//------------------------------------------------------------------------
void main(){
lcd_init();
enable_interrupts(INT_RB);
//cho phép ngắt (GLOBAL);

trisb=0xF0;

while(tit0!=0){
lcd_putchar(tit0);
i++;
delay_ms(70);
}
lcd_putcmd(line_2);
i=0;ok=0;pt=0;

while(tit1!=0){
lcd_putchar(tit1);
i++;
delay_ms(70);
}
delay_ms(2000);
write_line1(1000,1);delay_ms(2000);
lcd_putcmd(clear_scr);

enable_interrupts(GLOBAL);
while(1){
//quet hang
hang4=0; hang1=1; delay_ms(10);
//Xuat tin hieu 1 ra hang 1, 0 ra hang 4 de do hang,
hang1=0; hang2=1; delay_ms(10);
//Xuat tin hieu 1 ra hang 2, 0 ra hang 1 de do hang
hang2=0; hang3=1; delay_ms(10);
//Xuat tin hieu 1 ra hang 3, 0 ra hang 2 de do hang
hang3=0; hang4=1; delay_ms(10);
//Xuat tin hieu 1 ra hang 4, 0 ra hang 3 de do hang
}
}


Bác nào có code chuẩn của cái này thì cho e xin tham khảo được ko.
messi2410 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 09:36 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam