PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) (http://www.picvietnam.com/forum/forumdisplay.php?f=12)
-   -   1 số chỗ chưa hiểu trong đoạn code, mong được giải đáp (http://www.picvietnam.com/forum/showthread.php?t=6838)

apiker 15-08-2010 11:19 AM

1 số chỗ chưa hiểu trong đoạn code, mong được giải đáp
 
em có đọc một đoạn code như sau:

//************************************************** ***************************
// Author : nhh
// Date : 03/04/06
// Hardware: PIC16F877A
//************************************************** ***************************
#include <16F877A.h>
#include <def_877A.h>
#fuses NOWDT,PUT,XT,NOPROTECT
#use delay(clock=4000000)
#use fast_io(b)
#use fast_io(c)
int a;
const unsigned char dig[]={0b00111111,0b00000110, 0b01011011,0b01001111,\
0b01100110,0b01101101,0b01111101,0b00000111,0b0111 1111,0b01101111,0b01110111,\
0b01111100,0b00111001,0b01011110,0b11111001,0b1111 0001};
// ma hoa digital duoi dang mang
// Chuong trinh ngat
#int_RB
void ngat_RB()
{
if((RBIF)&&(RBIE))
{
{
if(RB4&&RB0)
a=dig[0];
}
{
if(RB4&&RB1)
a=dig[4];
}
{
if(RB4&&RB2)
a=dig[8];
}
{
if(RB4&&RB3)
a=dig[12];
}
//.......
{
if(RB5&&RB0)
a=dig[1];
}
{
if(RB5&&RB1)
a=dig[5];
}
{
if(RB5&&RB2)
a=dig[9];
}
{
if(RB5&&RB3)
a=dig[13];
}
//........
{
if(RB6&&RB0)
a=dig[2];
}
{
if(RB6&&RB1)
a=dig[6];
}
{
if(RB6&&RB2)
a=dig[10];
}
{
if(RB6&&RB3)
a=dig[14];
}
//........
{
if(RB7&&RB0)
a=dig[3];
}
{
if(RB7&&RB1)
a=dig[7];
}
{
if(RB7&&RB2)
a=dig[11];
}
{
if(RB7&&RB3)
a=dig[15];
}
RBIF=0; //Xoa co ngat RB
}
}
// Chuong trinh chinh
void main()
{
set_tris_b(0b11110000);
set_tris_c(0);
enable_interrupts(global);
enable_interrupts(int_RB);
ext_int_edge(H_to_L);
portb=0;
portc=0;
while(true)
{
portb=1;
portb=2;
portb=4;
portb=8;
portc=a;
}
}

1/ các anh cho em hỏi tại sao ta lại có thể mã hóa được như thề này
const unsigned char dig[]={0b00111111,0b00000110, 0b01011011,0b01001111,\
0b01100110,0b01101101,0b01111101,0b00000111,0b0111 1111,0b01101111,0b01110111,\
0b01111100,0b00111001,0b01011110,0b11111001,0b1111 0001};
2/ các anh giải thích hộ em ý nghĩa của đoạn code này:
while(true)
{
portb=1;
portb=2;
portb=4;
portb=8;
portc=a
}
thanks!

apiker 16-08-2010 09:33 AM

BUZZ! Anybody here? Có ai giúp đỡ nhập môn đệ tử này với.

xungba22 17-08-2010 12:11 AM

biết gì nói đó
 
const unsigned char dig[]={0b00111111,0b00000110, 0b01011011,0b01001111,\
0b01100110,0b01101101,0b01111101,0b00000111,0b0111 1111,0b01101111,0b01110111,\
0b01111100,0b00111001,0b01011110,0b11111001,0b1111 0001};

cái này chỉ là mả led 7 đoạn thồi.Tùy thuộc vào A chung hay K chung mà có mã khác nhau.

còn muốn giải thĩ kĩ hơn thì poss luôn sơ đồ nguyên lý lên mình coi mới biết chính sác được.

xungba22 17-08-2010 12:17 AM

biết gì nói đó
 
while(true)
{
portb=1;
portb=2;
portb=4;
portb=8;
portc=a
}

đoạn cos này nếu mà mình đoán ko nhầm thì đây là một đoạn quét led.

apiker 17-08-2010 10:14 AM

mình tải chương trình này ở đây
http://www.picvietnam.com/forum/show...p?t=357&page=2
(post #19)
bạn giải thích cho mình rõ hơn được ko? A chung hay K chung thì thế nào? cả việc quét led nữa nhé. thanks!


Múi giờ GMT. Hiện tại là 11:45 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam