![]() |
|
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 |
![]() |
#11 |
Nhập môn đệ tử
Tham gia ngày: Dec 2010
Bài gửi: 4
: |
Xin các bác giúp Em tìm lỗi
Em viết chương trính CCS C cho PIC8F4431. Đoạn code va mạch trong file đính kèm.Em muốn hiện cả 2 khối như kiểu đèn tín hiệu giao thông, xanh rồi dến đỏ ở 2 pha đường khác nhau. Nhưng khi mô phỏng thì nó chỉ hiện lần lượt xanh rồi đến đỏ ở từng pha mà không hiện đồng thời cả 2 pha. Mong các Bác sửa giúp.
#include <18F4431.h> #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=20000000) int dvi1,truc1,dvi2,truc2,dvi3,truc3,dvi4,truc4; int billy[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x7,0x7F,0x6F }; int16 i,j,a,c,m,n,o,e ; void doi() { truc1=a/10; dvi1=a%10; truc2=c/10; dvi2=c%10; truc3=m/10; dvi3=m%10; truc4=n/10; dvi4=n%10; } void hien1() { for(i=0;i<450;i++) { if(input(pin_E2)) { output_D(0b11111110); output_B(billy[dvi1]); delay_us(100); output_D(0b11111101); output_B(billy[truc1]); delay_us(100); } else output_B(billy[0]); delay_us(100); }} void hien2() { for(i=0;i<450;i++) { if(input(pin_E2)) { output_D(0b111111011); output_B(billy[dvi2]); delay_us(100); output_D(0b111110111); output_B(billy[truc2]); delay_us(100); } else output_B(billy[0]); delay_us(100); }} void hien3() { for(i=0;i<450;i++) { if(input(pin_E2)) { output_D(0b11101111); output_B(billy[dvi3]); delay_us(100); output_D(0b11011111); output_B(billy[truc3]); delay_us(100); } else output_B(billy[0]); delay_us(100); }} void hien4() { for(i=0;i<450;i++) { if(input(pin_E2)) { output_D(0b10111111); output_B(billy[dvi4]); delay_us(100); output_D(0b01111111); output_B(billy[truc4]); delay_us(100); } else output_B(billy[0]); delay_us(100); }} void hien12() { for(j=0;j<11;j++) { a=10-j; doi(); hien1(); if(a==0) break; } for(j=0;j<4;j++) { c=3-j; doi(); hien2(); if(c==0) break; } } void hien34() { for(j=0;j<9;j++) { m=8-j; doi(); hien3(); if(m==0) break; } for(j=0;j<6;j++) { n=5-j; doi(); hien4(); if(n==0) break; } } void main() { set_tris_E(0x00001100); set_tris_B(0x00); set_tris_D(0x00); set_tris_C(0x00); while(1) { hien12(); hien34(); } } |
![]() |
![]() |
|
|