PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT 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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 15-10-2011, 08:50 PM   #1
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi ncthien09 View Post
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 đề.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-10-2011, 10:09 PM   #2
ncthien09
Nhập môn đệ tử
 
Tham gia ngày: Feb 2011
Bài gửi: 5
:
Trích:
Nguyên văn bởi tdm View Post
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Ả.
}
     }
bạn xem lại dùm mình nhé, cho dù mình có đưa PORTC=j+8 vô vòng lặp for thì nó cũng đứng trơ trơ thôi, bực lắm rồi bạn ạ !
ncthien09 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-10-2011, 11:42 PM   #3
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi ncthien09 View Post
bạn xem lại dùm mình nhé, cho dù mình có đưa PORTC=j+8 vô vòng lặp for thì nó cũng đứng trơ trơ thôi, bực lắm rồi bạn ạ !
chèn thêm delay_ms(1) ; xem trong code:
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 GU+?I DU+~ LIE^.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;
SET_TRIS_C(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);
}
OUTPUT_C(j+8);
DELAY_MS(1);thêm vào
}
 // BI. LO^~I CHO^~ NÀY, ?ÁNG LE~ PHA?I ?U+A DU+~ LIE^.U RA PORT C MÀ NÓ KHÔNG ?U+A GÌ RA CA?.
}
}
Hình Kèm Theo
File Type: jpg hien_thi.jpg (193.3 KB, 4 lần tải)
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


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à 06:37 AM.


Đượ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