亚洲春色中文字幕久久久-三上亚,91精品国产亚一区二区三区,久久久九色综合亚洲成色777,涩涩视频下载,国产午夜亚洲精品午夜鲁丝片,国产精品A一区二区三区腾讯导航,影音先锋色情AV在线看片,蜜臀国产在线视频,极品少妇高潮啪啪无码吴梦梦 ,精品人妻无码一区二区三区手机版

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機向主機發(fā)送字符串程序,有幾個問題請教一下

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:668004 發(fā)表于 2020-7-9 09:57 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
/*        名稱:單片機向主機發(fā)送字符串
        說明:單片機按一定的時間間隔向主機發(fā)送字符串,發(fā)送內(nèi)容在虛擬終

端顯示。
*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
//延時
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);
        //向主機發(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個字符后換行
                {
                        Puts_to_SerialPort("\r\n");
                        DelayMS(100);        
                }
        }
}


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


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

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


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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

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

使用道具 舉報

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

\0啥意思啊
回復

使用道具 舉報

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

你說的很清楚,程序說的不是很清楚
回復

使用道具 舉報

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

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

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

使用道具 舉報

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

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


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

2. while(*s!='\0')------------------------這個是標準的格式嗎
回復

使用道具 舉報

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

是加了‘\0’---------加了單引號
回復

使用道具 舉報

12#
ID:668004 發(fā)表于 2020-7-10 10:04 | 只看該作者
wangyuejia2015 發(fā)表于 2020-7-9 13:41
被其他調(diào)用的函數(shù)一定放在前面 如果用不同的.c文件 把函數(shù)寫到。h文件其他文件 引用這個。h文件也就可以調(dià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沒有關系,加void說明主函數(shù)沒有返回值,void可以省略不寫
回復

使用道具 舉報

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

有返回值怎么寫
回復

使用道具 舉報

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

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

使用道具 舉報

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

使用道具 舉報

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

我的帖子  你不要吭聲
回復

使用道具 舉報

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

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

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表