PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

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

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
Prev Previous Post   Next Post Next
Old 27-10-2012, 05:12 PM   #1
luandk91
Đệ tử 1 túi
 
Tham gia ngày: Nov 2011
Bài gửi: 11
:
mọi người giúp mình với! lỗi nho nhỏ

chào các bạn!
Các bạn xem cái code mình với( quang báo dùng 16f877a). Sao mình đổi chân của Port C 4, 5, 6 sang 1,2,3 thì nó chạy không được ( mình tô đỏ trong code). mình gởi code lên.


#include <16f877a.h>
#include <font5x7.c>
#use delay(clock=20m)

#byte Port_B = 0x06 // Dinh nghia thanh ghi Port B
#byte Port_C = 0x07 // Dinh nghia thanh ghi Port C
#byte TRIS_B = 0x86 // Dinh nghia thanh ghi Tris B
#byte TRIS_C = 0x87 // Dinh nghia thanh ghi Tris B

#byte led_data = Port_B
#bit data = Port_C.4 // Dinh nghia chan data la pin C.4
#bit clock = Port_C.5 // Dinh nghia chan data la pin C.5
#bit latch = Port_C.6 // Dinh nghia chan data la pin C.6

char led[32];//4led matran
char font_buffer[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};//
unsigned char string1[]="DO AN HE THONG NHUNG -- LED matrix 8x32 -- Sad_moon";
char dem_ngat, addr, leng, ky_tu, vi_tri;

// Chuong trinh con day du lieu vao 595
// ULN 2803 dem dau ra dao nen day vao 1bit 0 va 31bit 1
void HC595(char cot){
char i;
for(i=0;i<cot;i++){ //DUA CAC BIT 0 VAO` TRUOC
data=1; // Dua bit 0 vao 595
clock=1; // Tao 1 xung o chan Clock de dua du lieu vao 595
clock=0;
}
data=0; // Dua bit 0 vao vi tri cot can hien thi
clock=1;
clock=0;
for(i=(cot+1);i<=31;i++){
data=1; //Tiep tu dua bit 0 vao 595 cho du 32bit
clock=1;
clock=0;
}
latch=1; // Tao 1 xung o chan Latch de day du lieu ra cac cong va chot
latch=0;
}

#int_timer0 // Khai bao su dung timer 0
// Chuong trinh ngat Timer0
void Scan(void){
set_timer0(6); //cai dat gia tri ban dau cho timer0
if((++dem_ngat)==2){
led_data=0xff;
HC595(addr);
led_data=led[addr];
addr++;
if(addr>=32) addr=0;
dem_ngat=0;
}
}
// Chuong trinh con lay do dai chuoi ky tu
void leng_string(void){
leng=0;
while((string1[leng])!='\0') // Chay tu dau cho toi khi ket thuc chuoi
leng++;
}
// Chuong trinh con Copy font chu vao bo dem
void copy_font(void){
char j;
for(j=0;j<=4;j++)
font_buffer[j]=font[(string1[ky_tu]-32)].b[j]; // Copy ma font (5byte) tu ky tu can hien thi vao bo dem font_buffer
font_buffer[j]=0xff;
}
// Chuong trinh con cho chu chay tu phai sang trai
void kieu_1(void){
char j;
for(j=31;j>0;j--)
led[j]=led[j-1];
if(vi_tri>5){
vi_tri=0;
copy_font();
ky_tu++;
}
else{
led[0]=font_buffer[vi_tri];
vi_tri++;
}
}
// Chuong trinh chinh
void main(){
int i;
TRIS_B=0x00; TRIS_C=0x00;
Port_B=0x00; Port_C=0x00;

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16); //tan so timer0 = precase/16
set_timer0(6); //dat gia tri ban dau cho RTC
enable_interrupts(global);//cho phep ngat toan cuc
enable_interrupts(int_rtcc);

leng_string(); // Lay do dai
ky_tu=0;
while(true){
for (i=0;i<=31;i++) led[i]=0xff;
while(ky_tu<=leng){
kieu_1();
delay_ms(50);
}
}
}
luandk91 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à 03:53 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