久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4434|回復: 17
收起左側

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

[復制鏈接]
ID:668004 發(fā)表于 2020-7-9 09:57 | 顯示全部樓層 |閱讀模式
/*        名稱:單片機向主機發(fā)送字符串
        說明:單片機按一定的時間間隔向主機發(fā)送字符串,發(fā)送內容在虛擬終

端顯示。
*/
#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
回復

使用道具 舉報

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ù)調用,放在主函數(shù)前面一般不需要另外聲明。
2.==是測試,=是賦值,while(TI==0);測試括號內容為假跳出死循環(huán)。
3.while(*s!='\0')Putc_to_SerialPort(*s); while(*s!='\0')測試指針地址結束符號,*s!='\0'為假跳出死循環(huán)。
4.c+'A'將數(shù)據(jù)c轉換成字符碼(ASCII碼)便于特定顯示器顯示。
5.\r\n 回車換行。
回復

使用道具 舉報

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

使用道具 舉報

ID:775776 發(fā)表于 2020-7-9 13:41 | 顯示全部樓層
被其他調用的函數(shù)一定放在前面 如果用不同的.c文件 把函數(shù)寫到。h文件其他文件 引用這個。h文件也就可以調用該函數(shù)了
回復

使用道具 舉報

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ù)是嗎
回復

使用道具 舉報

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啥意思啊
回復

使用道具 舉報

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

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

使用道具 舉報

ID:668004 發(fā)表于 2020-7-10 09:49 | 顯示全部樓層
wulin 發(fā)表于 2020-7-9 12:44
1.主函數(shù)前面的三個函數(shù)是子函數(shù),供主函數(shù)調用,放在主函數(shù)前面一般不需要另外聲明。
2.==是測試,=是賦 ...

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

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

使用道具 舉報

ID:668004 發(fā)表于 2020-7-10 09:54 | 顯示全部樓層
wulin 發(fā)表于 2020-7-9 12:44
1.主函數(shù)前面的三個函數(shù)是子函數(shù),供主函數(shù)調用,放在主函數(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')------------------------這個是標準的格式嗎
回復

使用道具 舉報

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’---------加了單引號
回復

使用道具 舉報

ID:668004 發(fā)表于 2020-7-10 10:04 | 顯示全部樓層
wangyuejia2015 發(fā)表于 2020-7-9 13:41
被其他調用的函數(shù)一定放在前面 如果用不同的.c文件 把函數(shù)寫到。h文件其他文件 引用這個。h文件也就可以調 ...

能舉個例子不
回復

使用道具 舉報

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可以省略不寫
回復

使用道具 舉報

ID:668004 發(fā)表于 2020-7-10 10:12 | 顯示全部樓層
hei512020 發(fā)表于 2020-7-10 10:11
main()就表示主函數(shù),和加不加void沒有關系,加void說明主函數(shù)沒有返回值,void可以省略不寫

有返回值怎么寫
回復

使用道具 舉報

ID:668004 發(fā)表于 2020-7-10 11:39 | 顯示全部樓層
wulin 發(fā)表于 2020-7-9 12:44
1.主函數(shù)前面的三個函數(shù)是子函數(shù),供主函數(shù)調用,放在主函數(shù)前面一般不需要另外聲明。
2.==是測試,=是賦 ...

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

使用道具 舉報

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

使用道具 舉報

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

我的帖子  你不要吭聲
回復

使用道具 舉報

ID:319023 發(fā)表于 2020-7-11 11:22 | 顯示全部樓層
還是 去學習C語言吧。  
1.主函數(shù)前面的三個viod是是表示子函數(shù)調用  無返回值

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

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 狠狠骚| 亚洲欧美中文日韩在线v日本 | 亚洲精品一 | av在线一区二区三区 | www.亚洲成人网 | 成人免费视频 | 欧美日韩国产一区二区三区 | 精品国产欧美在线 | av中文字幕网站 | 91一区二区 | 欧美日韩高清一区二区三区 | 成人午夜免费福利视频 | 日韩久久久一区二区 | 在线成人免费观看 | 亚洲一区二区精品视频在线观看 | 国产午夜精品久久久久免费视高清 | 国产精品久久久久久婷婷天堂 | 久久国产电影 | 日韩精品在线播放 | 一级免费黄色 | 国产免费拔擦拔擦8x高清 | 久久久青草 | 国产福利视频 | 欧美 日韩 亚洲91麻豆精品 | 久久久成人一区二区免费影院 | 一区二区三区精品视频 | 欧美精品成人一区二区三区四区 | 一级免费a | 国产乱码久久久久久 | 国产小视频精品 | 日韩一区二区三区视频在线观看 | 极品在线 | 国产激情视频在线 | 精品视频一区二区三区四区 | 一级黄色夫妻生活 | 欧美日韩高清一区 | 中文字幕日韩一区 | 黄色亚洲网站 | 黄色欧美视频 | 久久久久国产精品一区二区 | 国产精品免费大片 |