15-10-2011, 08:50 PM
|
#4
|
Đệ tử 7 túi
Tham gia ngày: May 2005
Bài gửi: 258
:
|
Trích:
Nguyên văn bởi ncthien09
E ĐANG LÀM ĐỀ TÀI QUANG BÁO, THỬ VIẾT HÀM GỬI DỮ LIỆU CHO 74595, HÀM THÌ CHẠY TỐT RỒI, NHƯNG EM LỒNG VÔ HÀM FOR THÌ NÓ CỨ BỊ LỖI, KHÔNG HIỆN GÌ LÊN LED MA TRẬN HẾT. EM DÙNG 74138 QUÉT HÀNG. 74595 3 CON NỐI TIẾP ĐƯA DỮ LIỆU RA CỘT. CODE E BỊ LỖI PHẦN 74138 MÔ PHỎNG KHÔNG CÓ TÍN HIỆU GÌ HẾT, CHỖ LỆNH PORTC=J+8 ẤY. CÁC A GIÚP DÙM E PHÁT VỚI, MẤY NGÀY NAY MÒ HOÀI MÀ KHÔNG BIẾT BỊ GÌ, MUỐN ĐIÊN RỒI. HIC. EM CHÂN THÀNH CẢM ƠN RẤT NHIỀU !
ĐÂY LÀ CODE CỦA E, E CÓ GỬI LUÔN FILE MÔ PHỎNG PROTUES CHO CÁC A XEM GIÚP.
#include<18f4431.h>
#include<def_4431.h>
#fuses hs,nowdt,nolvp
#use delay(clock=12M)
#define DATA RB1
#define CLOCK RB2
#define LATCH RB4
int8 send,i,j;
void send_595(int8 send){ // HÀM GỬI DỮ LIỆU RA 74595
for(i=0;i<=7;i++)
{
if(bit_test(send,7))
DATA=1;
else
DATA=0;
CLOCK=0; // TAO XUNG CLOCK DICH DATA VAO 74595
CLOCK=1;
send=send<<1;
}
LATCH=0; // CHOT DU LIEU RA 74595
LATCH=1;
}
void main(void) {
TRISB=0x00;
TRISC=0x00;
CLOCK = 1;
LATCH = 1;
WHILE(1){
for (j=0;j<=7;j++)
{
if (j&1) {
send_595(0x55);
send_595(0x55);
send_595(0x55);
}
else{
send_595(0xAA);
send_595(0xAA);
send_595(0xAA);}
}
PORTC=j+8; // BỊ LỖI CHỖ NÀY, ĐÁNG LẼ PHẢI ĐƯA DỮ LIỆU RA PORT C MÀ NÓ KHÔNG ĐƯA GÌ RA CẢ.
}
}
MỤC ĐÍCH EM MUỐN NÓ HIỆN NHƯ HÌNH BÊN DƯỚI, NHƯNG KHÔNG DÙNG HÀM FOR THÌ LÀM ĐƯỢC, CÒN LỒNG VÔ LÀM FOR THÌ NÓ KHÔNG ĐƯA DỮ LIỆU RA 74138.
|
PORTC=j+8; bạn đặt nó ngoài vào lặp For thì làm sao mà đúng được.
Code:
#include<18f4431.h>
#include<def_4431.h>
#fuses hs,nowdt,nolvp
#use delay(clock=12M)
#define DATA RB1
#define CLOCK RB2
#define LATCH RB4
int8 send,i,j;
void send_595(int8 send){ // HÀM GỬI DỮ LIỆU RA 74595
for(i=0;i<=7;i++)
{
if(bit_test(send,7))
DATA=1;
else
DATA=0;
CLOCK=0; // TAO XUNG CLOCK DICH DATA VAO 74595
CLOCK=1;
send=send<<1;
}
LATCH=0; // CHOT DU LIEU RA 74595
LATCH=1;
}
void main(void) {
TRISB=0x00;
TRISC=0x00;
CLOCK = 1;
LATCH = 1;
WHILE(1){
for (j=0;j<=7;j++)
{
if (j&1) {
send_595(0x55);
send_595(0x55);
send_595(0x55);
}
else{
send_595(0xAA);
send_595(0xAA);
send_595(0xAA);}
PORTC=j+8;
}
// BỊ LỖI CHỖ NÀY, ĐÁNG LẼ PHẢI ĐƯA DỮ LIỆU RA PORT C MÀ NÓ KHÔNG ĐƯA GÌ RA CẢ.
}
}
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.
|
|
|