Trích:
Nguyên văn bởi tdm
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 ạ !