欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5140|回復(fù): 17
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)向主機(jī)發(fā)送字符串程序,有幾個(gè)問題請(qǐng)教一下

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
/*        名稱:?jiǎn)纹瑱C(jī)向主機(jī)發(fā)送字符串
        說明:?jiǎn)纹瑱C(jī)按一定的時(shí)間間隔向主機(jī)發(fā)送字符串,發(fā)送內(nèi)容在虛擬終

端顯示。
*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
//延時(shí)
void DelayMS(uint ms)
{
        uchar i;
        while(ms--) for(i=0;i<120;i++);
}
//向串口發(fā)送字符
void Putc_to_SerialPort(uchar c)
{
        SBUF=c;
        while(TI==0);
        TI=0;
}
//向串口發(fā)送字符串
void Puts_to_SerialPort(uchar *s)
{
        while(*s!='\0')
        {        
                Putc_to_SerialPort(*s);
                s++;
                DelayMS(5);
        }
}
//主程序
void main()
{
        uchar c=0;
        SCON=0x40;                //串口模式1
        TMOD=0x20;                //T1工作模式2
        TH1=0xfd;                //波特率9600
        TL1=0xfd;
        PCON=0x00;                //波特率不倍增
        TI=0;
        TR1=1;
        DelayMS(200);
        //向主機(jī)發(fā)送數(shù)據(jù)
        Puts_to_SerialPort("Receiving From 8051...\r\n");
        Puts_to_SerialPort("-------------------------------\r\n");
        DelayMS(50);
        while(1)
        {
                Putc_to_SerialPort(c+'A');
                DelayMS(100);
                Putc_to_SerialPort(' ');
                DelayMS(100);
                if(c==25)        //每輸出一遍后加橫線
                {
                        Puts_to_SerialPort("\r

\n-------------------------------\r\n");
                        DelayMS(100);
                }
                c=(c+1)%26;
                if(c%10==0)                //每輸出10個(gè)字符后換行
                {
                        Puts_to_SerialPort("\r\n");
                        DelayMS(100);        
                }
        }
}


問題:
1.主函數(shù)前面的三個(gè)viod是函數(shù)聲明嗎?


2.while(TI==0);
        TI=0;--------------==0和=0是啥區(qū)別?

3.while(*s!='\0')Putc_to_SerialPort(*s);------------這括號(hào)里是啥意思


Puts_to_SerialPort("Receiving From 8051...\r\n");
        Puts_to_SerialPort("-------------------------------\r\n");
        DelayMS(50);
        while(1)
        {
                Putc_to_SerialPort(c+'A');
                DelayMS(100);

------------\r\n和c+'A'和("\r\n");都是表示啥?



圖片1.png (20.62 KB, 下載次數(shù): 75)

圖片1.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:608600 發(fā)表于 2020-7-9 12:01 | 只看該作者
不是函數(shù)聲明,就是函數(shù),功能不是標(biāo)的清清楚楚嗎。
while(T1=0)是把T1賦值為0,同時(shí)該表達(dá)式的結(jié)果也是0,所以永遠(yuǎn)不會(huì)執(zhí)行while下面的循環(huán)
while(T1==0)是如果T1的值為0,T1==0表達(dá)式的結(jié)果為1,則執(zhí)行下面的循環(huán);反之,表達(dá)式的結(jié)果為0,不執(zhí)行下面的循環(huán)
第三個(gè)不是很清楚,應(yīng)該是打印字符吧,打印字符到這個(gè)子函數(shù)里
回復(fù)

使用道具 舉報(bào)

板凳
ID:213173 發(fā)表于 2020-7-9 12:44 | 只看該作者
1.主函數(shù)前面的三個(gè)函數(shù)是子函數(shù),供主函數(shù)調(diào)用,放在主函數(shù)前面一般不需要另外聲明。
2.==是測(cè)試,=是賦值,while(TI==0);測(cè)試?yán)ㄌ?hào)內(nèi)容為假跳出死循環(huán)。
3.while(*s!='\0')Putc_to_SerialPort(*s); while(*s!='\0')測(cè)試指針地址結(jié)束符號(hào),*s!='\0'為假跳出死循環(huán)。
4.c+'A'將數(shù)據(jù)c轉(zhuǎn)換成字符碼(ASCII碼)便于特定顯示器顯示。
5.\r\n 回車換行。
回復(fù)

使用道具 舉報(bào)

地板
ID:207421 發(fā)表于 2020-7-9 12:44 | 只看該作者
1. 你打void錯(cuò)了,是函數(shù)沒有返回值的意思
2. == 判斷的條件, = 賦值
3. \0  字符串結(jié)尾都有\(zhòng)0,  \r\n 換行
回復(fù)

使用道具 舉報(bào)

5#
ID:775776 發(fā)表于 2020-7-9 13:41 | 只看該作者
被其他調(diào)用的函數(shù)一定放在前面 如果用不同的.c文件 把函數(shù)寫到。h文件其他文件 引用這個(gè)。h文件也就可以調(diào)用該函數(shù)了
回復(fù)

使用道具 舉報(bào)

6#
ID:668004 發(fā)表于 2020-7-10 09:41 | 只看該作者
小黑的大表舅 發(fā)表于 2020-7-9 12:01
不是函數(shù)聲明,就是函數(shù),功能不是標(biāo)的清清楚楚嗎。
while(T1=0)是把T1賦值為0,同時(shí)該表達(dá)式的結(jié)果也是0 ...

您好  viod main()和viod 其他有怎樣的區(qū)別?加了main()就是主函數(shù)是嗎
回復(fù)

使用道具 舉報(bào)

7#
ID:668004 發(fā)表于 2020-7-10 09:42 | 只看該作者
lwh999995 發(fā)表于 2020-7-9 12:44
1. 你打void錯(cuò)了,是函數(shù)沒有返回值的意思
2. == 判斷的條件, = 賦值
3. \0  字符串結(jié)尾都有\(zhòng)0,  \r\n 換 ...

\0啥意思啊
回復(fù)

使用道具 舉報(bào)

8#
ID:668004 發(fā)表于 2020-7-10 09:44 | 只看該作者
小黑的大表舅 發(fā)表于 2020-7-9 12:01
不是函數(shù)聲明,就是函數(shù),功能不是標(biāo)的清清楚楚嗎。
while(T1=0)是把T1賦值為0,同時(shí)該表達(dá)式的結(jié)果也是0 ...

你說的很清楚,程序說的不是很清楚
回復(fù)

使用道具 舉報(bào)

9#
ID:668004 發(fā)表于 2020-7-10 09:49 | 只看該作者
wulin 發(fā)表于 2020-7-9 12:44
1.主函數(shù)前面的三個(gè)函數(shù)是子函數(shù),供主函數(shù)調(diào)用,放在主函數(shù)前面一般不需要另外聲明。
2.==是測(cè)試,=是賦 ...

1.放在后面是需要聲明是嗎?

4.那原來C是十六進(jìn)制數(shù)是嗎?如果要將數(shù)據(jù)B轉(zhuǎn)換成字符碼就是b+‘A’???十六進(jìn)制和字符碼有怎樣的對(duì)應(yīng)關(guān)系呢?
回復(fù)

使用道具 舉報(bào)

10#
ID:668004 發(fā)表于 2020-7-10 09:54 | 只看該作者
wulin 發(fā)表于 2020-7-9 12:44
1.主函數(shù)前面的三個(gè)函數(shù)是子函數(shù),供主函數(shù)調(diào)用,放在主函數(shù)前面一般不需要另外聲明。
2.==是測(cè)試,=是賦 ...

void Puts_to_SerialPort(uchar *s)
{
        while(*s!='\0')
        {        
                Putc_to_SerialPort(*s);
                s++;
                DelayMS(5);


1.這個(gè)void Puts_to_SerialPort(uchar *s)------------定義這個(gè)S變量的時(shí)候  為什么前面還加一個(gè)*?

2. while(*s!='\0')------------------------這個(gè)是標(biāo)準(zhǔn)的格式嗎
回復(fù)

使用道具 舉報(bào)

11#
ID:668004 發(fā)表于 2020-7-10 10:02 | 只看該作者
lwh999995 發(fā)表于 2020-7-9 12:44
1. 你打void錯(cuò)了,是函數(shù)沒有返回值的意思
2. == 判斷的條件, = 賦值
3. \0  字符串結(jié)尾都有\(zhòng)0,  \r\n 換 ...

是加了‘\0’---------加了單引號(hào)
回復(fù)

使用道具 舉報(bào)

12#
ID:668004 發(fā)表于 2020-7-10 10:04 | 只看該作者
wangyuejia2015 發(fā)表于 2020-7-9 13:41
被其他調(diào)用的函數(shù)一定放在前面 如果用不同的.c文件 把函數(shù)寫到。h文件其他文件 引用這個(gè)。h文件也就可以調(diào) ...

能舉個(gè)例子不
回復(fù)

使用道具 舉報(bào)

13#
ID:800866 發(fā)表于 2020-7-10 10:11 | 只看該作者
QWE4562012 發(fā)表于 2020-7-10 09:41
您好  viod main()和viod 其他有怎樣的區(qū)別?加了main()就是主函數(shù)是嗎

main()就表示主函數(shù),和加不加void沒有關(guān)系,加void說明主函數(shù)沒有返回值,void可以省略不寫
回復(fù)

使用道具 舉報(bào)

14#
ID:668004 發(fā)表于 2020-7-10 10:12 | 只看該作者
hei512020 發(fā)表于 2020-7-10 10:11
main()就表示主函數(shù),和加不加void沒有關(guān)系,加void說明主函數(shù)沒有返回值,void可以省略不寫

有返回值怎么寫
回復(fù)

使用道具 舉報(bào)

15#
無效樓層,該帖已經(jīng)被刪除
16#
ID:668004 發(fā)表于 2020-7-10 11:39 | 只看該作者
wulin 發(fā)表于 2020-7-9 12:44
1.主函數(shù)前面的三個(gè)函數(shù)是子函數(shù),供主函數(shù)調(diào)用,放在主函數(shù)前面一般不需要另外聲明。
2.==是測(cè)試,=是賦 ...

你好 哥  幫忙推薦一款適合我學(xué)習(xí)的開發(fā)板  我去學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

17#
ID:158375 發(fā)表于 2020-7-10 12:46 | 只看該作者
建議樓主找一本c語言方面的書,稍微閱讀一下,免得在這里浪費(fèi)大家的時(shí)間。。。。。。
回復(fù)

使用道具 舉報(bào)

18#
ID:668004 發(fā)表于 2020-7-11 11:08 | 只看該作者
笨笨兔 發(fā)表于 2020-7-10 12:46
建議樓主找一本c語言方面的書,稍微閱讀一下,免得在這里浪費(fèi)大家的時(shí)間。。。。。。

我的帖子  你不要吭聲
回復(fù)

使用道具 舉報(bào)

19#
ID:319023 發(fā)表于 2020-7-11 11:22 | 只看該作者
還是 去學(xué)習(xí)C語言吧。  
1.主函數(shù)前面的三個(gè)viod是是表示子函數(shù)調(diào)用  無返回值

2.while(TI==0);
        TI=0;----------
==0   是判斷 左右兩邊值是否相等
=0是  把0  賦值給左邊

3.while(*s!='\0')Putc_to_SerialPort(*s);------------這括號(hào)里是啥意思
表示調(diào)用函數(shù)的參數(shù)是 指針
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表