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)
-   -   Về char trong CCS (http://www.picvietnam.com/forum/showthread.php?t=8900)

tornado1990 19-04-2011 02:13 PM

Về char trong CCS
 
Xin chào mọi người!
Mình tham gia diễn đàn khá lâu rồi tuy nhiên chưa có đóng góp nào cả. Mặc dù vậy cũng mong các bậc đàn anh chỉ bảo thêm các vấn đề mà bản thân còn chưa hiểu
Code:

//chuong trinh chuyen ki tu can hien thi ra ma font
void Convert(unsigned int source)
{
        unsigned int position,i;
        position=(source>39)? (source-40)*6:0;
        position=(source==32)? 88*6:position;
        position=(source==87)? 87*6:position;
        for(i=position;i<(position+6);i++)
        {
                Array[d]=ma[i];
                if(source==0) Array[d]=0;
                d++;
        }
       
}

là một đoạn code để chuyển string sang mã led hiển thị trên led matrix, ma[] là một mảng lớn chứa các mã font 7x6 của các chữ cái phục vụ quét
Code:

unsigned char code ma[]={0,
0,62,65,65,0,0,                        //(                                0
0,65,65,62,0,0,                        //)                                  1
16,56,60,56,16,0,                //*                                2
8,8,127,8,8,0,                        //+                                3
0,0,9,18,28,0,                        //,                                4
8,8,8,8,8,0,                        //-                                5
0,7,5,7,0,0,                        //.                                6
1,2,28,32,64,0,                        ///                                7
62,65,65,65,62,0,                //0                                8
17,33,127,1,1,0,                //1                                9
35,69,73,73,49,0,                //2                                10
34,65,73,73,54,0,                //3                                11
12,20,36,79,4,0,                //4                                12
114,73,73,73,70,0,                //5                                13
62,73,73,73,38,0,                //6                                14
65,66,68,72,112,0,                //7                                15
54,73,73,73,54,0,                //8                                16
50,73,73,73,62,0,                //9                                17
0,0,99,99,0,0,                        //:                                18
0,0,101,102,0,0,                //;                                19
0,8,20,34,65,0,                        //<                                20
9,9,9,9,9,0,                        //=                                21
65,34,20,8,0,0,                        //>                                22
0,48,64,77,48,0,                //?                                23
62,65,89,56,0,0,                //@                                24
63,68,68,68,63,0,                //A                                25
127,73,73,73,54,0,                //B                                26
62,65,65,65,34,0,                //C                                27
127,65,65,65,62,0,                //D                                28
127,73,73,73,65,0,                //E                                29
127,72,72,72,64,0,                //F                                30
62,65,73,73,46,0,                //G                                31
127,8,8,8,127,0,                //H                                32
65,65,127,65,65,0,                //I                                33
70,65,65,126,64,0,                //J                                34
127,8,20,34,65,0,                //K                                35
127,1,1,1,1,0,                        //L                                36
127,32,24,32,127,0,                //M                                37
127,32,16,8,127,0,                //N                                38

....// còn nhiều nữa
....//
}

Code:

void send_str(unsigned char *str,unsigned char color,unsigned char position,bit shi)
{
        unsigned char x,y=0;
        g_r=color;
        //nap font 12 ki tu vao mang Array de hien thi
        d=0;
        y=0;
        while(y<12)
        {
                if(*str!='\0')
                {
                        Convert(*str);
                        str++;
                }
                if(*str=='\0') Convert(0);
....//// còn nữa

Vấn đề của em là chỗ "unsigned char *str" dấu * ở đây có ý nghĩa gì, biến kiểu này em biết là 8bit không dấu nhưng trong bài giá trị cho ra của nó là gì? Chẳng hạn send_str("A") thì *str là số có giá trị ra sao? Có phải là mã ASCII không? Các chỗ so sánh *str=='\0' có ý nghĩa như thế nào?
Code:

send_str("Nhiet do phong hien tai la:",orange,0,1);
Em là newbie trong vụ CCS này, tuy có đọc nhiều tài liệu do các anh gởi nhưng cũng chưa thể "thông" hết được. Code trên là của một bài mẫu do một thành viên post lên tuy nhiên bài đã khá lâu rồi với lại do download nhiều quá nên cũng chả nhớ phải tìm lại ở đâu!
Rất mong nhận được sự giúp đỡ của mọi người!

tungbachnam 19-04-2011 09:05 PM

đây là biến kiểu pointer đọc thêm về c đi, trong trường hợp đi nó trỏ đến kí tự đầu của string mà bạn send

tornado1990 19-04-2011 09:41 PM

Trích:

Nguyên văn bởi tungbachnam (Post 44131)
đây là biến kiểu pointer đọc thêm về c đi, trong trường hợp đi nó trỏ đến kí tự đầu của string mà bạn send

Cảm ơn bạn, tuy nhiên mình cần giải thích cụ thể hơn, mình vốn không phải chuyên ngành điện tử, không được học cơ bản về c, cũng chả biết phải bắt đầu từ đâu. Mong mọi người chỉ bảo!


Múi giờ GMT. Hiện tại là 03:51 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