3074|16

3405

帖子

0

TA的资源

五彩晶圆(中级)

楼主
 

甲机发送控制命令字符 [复制链接]

 
/*        名称:甲机发送控制命令字符
        说明:甲单片机负责向外发送控制命令字符A”、“B”、“C”,或者停止发送,乙机根据所接收到的字符完成LED1闪烁、LED2闪烁、双闪烁、或停止闪烁。
*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED1=P0^0;               
sbit LED2=P0^3;
sbit K1=P1^0;
//延时
void DelayMS(uint ms)
{
        uchar i;
        while(ms--) for(i=0;i<120;i++);
}
//向串口发送字符
void Putc_to_SerialPort(uchar c)
{
        SBUF=c;
        while(TI==0);
        TI=0;
}
//主程序
void main()
{
        uchar Operation_No=0;
        SCON=0x40;                //串口模式1
        TMOD=0x20;                //T1工作模式2
        PCON=0x00;                //波特率不倍增
        TH1=0xfd;
        TL1=0xfd;
        TI=0;
        TR1=1;
        while(1)
        {
                if(K1==0)        //按下K1时选择操作代码0123
                {
                        while(K1==0);
                        Operation_No=(Operation_No+1)%4;
                }
                switch(Operation_No)        //根据操作代码发送A/B/C或停止发送
                {
                        case 0:        LED1=LED2=1;
                                        break;
                        case 1:        Putc_to_SerialPort('A');
                                        LED1=~LED1;LED2=1;
                                        break;
                        case 2:        Putc_to_SerialPort('B');
                                        LED2=~LED2;LED1=1;
                                        break;
                        case 3:        Putc_to_SerialPort('C');
                                        LED1=~LED1;LED2=LED1;
                                        break;
                }
                DelayMS(100);
        }
 
 
问题如下---------------
1.PCON=0x00;                //波特率不倍增-----------------通讯的时候不都是固定波特率的吗?
 
 
2.Operation_No=(Operation_No+1)%4;----------------为什么要加1再对4取余数呢?
 
 
 
3.case 0:        LED1=LED2=1;
                                        break;
                        case 1:        Putc_to_SerialPort('A');
                                        LED1=~LED1;LED2=1;
                                        break;
                        case 2:        Putc_to_SerialPort('B');
                                        LED2=~LED2;LED1=1;
                                        break;
                        case 3:        Putc_to_SerialPort('C');
                                        LED1=~LED1;LED2=LED1;
                                        break;----------------------------case0和其他的case定义怎么不一样?LED1=~LED1;LED2=1;------------------先把LED1取反的值给到LED1,然后LED2=1?这个啥意思
 
 
 
 
 
 
 

图片2.png (42.64 KB, 下载次数: 0)

图片2.png
此帖出自51单片机论坛

最新回复

Operation_No=(Operation_No+1)%4; 为什么要加1再对4取余数呢? Operation_No+1)在小于4时还是它本身,等于大于4就剩下余数。 这样可以实现加一,并且等于4时回到0. 实现Operation_No在0~3之间增一后回到0 循环点灯。   详情 回复 发表于 2020-7-14 09:52
点赞 关注
 

回复
举报

7671

帖子

2

TA的资源

五彩晶圆(高级)

沙发
 

2 ,取值固定在0-4的范围

3,0-4 5钟逻辑每种逻辑有自己的操作这很正常。LED1,LED2的理解没啥问题。

此帖出自51单片机论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

4008

帖子

0

TA的资源

版主

板凳
 
pcon是上电初始化配置的,之后的收发是固定的
此帖出自51单片机论坛

点评

火哥   2和3也回复下   详情 回复 发表于 2020-7-13 13:47
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

4
 

说明:甲单片机负责向外发送控制命令字符A”、“B”、“C”,或者停止发送,乙机根据所接收到的字符完成LED1闪烁、LED2闪烁、双闪烁、或停止闪烁。

 

楼主贴出的这段程序,倒底是甲机的程序还是乙机的程序?如果是甲机的程序,怎么还有修改LED的内容?如果是乙机的程序,怎么还有串口发送的内容?如果是甲机乙机通用,修改LED也不应该和串口发送在一起。

此帖出自51单片机论坛

点评

45  甲机通过串口控制乙机LED---------------第四十五个  你有时间帮我看看   下面那个是链接  详情 回复 发表于 2020-7-13 13:46
 
 
 

回复

3405

帖子

0

TA的资源

五彩晶圆(中级)

5
 
maychang 发表于 2020-7-13 11:31 说明:甲单片机负责向外发送控制命令字符“A”、“B”、“C”,或者停止发 ...

https://wenku.baidu.com/view/d769ed21112de2bd960590c69ec3d5bbfc0ada7b.html

此帖出自51单片机论坛
 
 
 

回复

3405

帖子

0

TA的资源

五彩晶圆(中级)

6
 
maychang 发表于 2020-7-13 11:31 说明:甲单片机负责向外发送控制命令字符“A”、“B”、“C”,或者停止发 ...

45  甲机通过串口控制乙机LED---------------第四十五个  你有时间帮我看看   下面那个是链接

此帖出自51单片机论坛

点评

这是第45个实例。前面44个都看明白了么?前面44个都一步一步仿真了么?  详情 回复 发表于 2020-7-13 15:01
“45  甲机通过串口控制乙机LED---------------第四十五个” 那是两个程序,一个用于甲机,一个用于乙机。你在一楼只抄了一个甲机的程序,可能也只看了这一个。  详情 回复 发表于 2020-7-13 15:00
 
 
 

回复

3405

帖子

0

TA的资源

五彩晶圆(中级)

7
 
huo_hu 发表于 2020-7-12 18:47 pcon是上电初始化配置的,之后的收发是固定的

火哥   2和3也回复下 

此帖出自51单片机论坛
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

8
 
QWE4562009 发表于 2020-7-13 13:46 45  甲机通过串口控制乙机LED---------------第四十五个  你有时间帮我看看   下面那个是 ...

“45  甲机通过串口控制乙机LED---------------第四十五个”

那是两个程序,一个用于甲机,一个用于乙机。你在一楼只抄了一个甲机的程序,可能也只看了这一个。

此帖出自51单片机论坛

点评

单片机甲用的是第一个程序   单片机乙用的第二个程序啊。。。  详情 回复 发表于 2020-7-13 18:42
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

9
 
QWE4562009 发表于 2020-7-13 13:46 45  甲机通过串口控制乙机LED---------------第四十五个  你有时间帮我看看   下面那个是 ...

这是第45个实例。前面44个都看明白了么?前面44个都一步一步仿真了么?

此帖出自51单片机论坛

点评

从放弃到放弃   学到多少是多少  日积月累  现在有吃饭的家伙  每天也有很多活要干   想急于求成也成不了  详情 回复 发表于 2020-7-13 18:45
 
 
 

回复

3405

帖子

0

TA的资源

五彩晶圆(中级)

10
 
maychang 发表于 2020-7-13 15:00 “45  甲机通过串口控制乙机LED---------------第四十五个” 那是两个程序,一个用于 ...

单片机甲用的是第一个程序   单片机乙用的第二个程序啊。。。

此帖出自51单片机论坛
 
 
 

回复

3405

帖子

0

TA的资源

五彩晶圆(中级)

11
 
maychang 发表于 2020-7-13 15:01 这是第45个实例。前面44个都看明白了么?前面44个都一步一步仿真了么?

从放弃到放弃   学到多少是多少  日积月累  现在有吃饭的家伙  每天也有很多活要干   想急于求成也成不了

此帖出自51单片机论坛

点评

我赞成 “日积月累”。但是无论学什么,总要循序渐进,不能还不会走就学着跑。 在你发的《单片机向主机发送字符串》那帖中,huo_hu和wsmysyn两位已经讲得很清楚了。  详情 回复 发表于 2020-7-13 19:00
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

12
 
QWE4562009 发表于 2020-7-13 18:45 从放弃到放弃   学到多少是多少  日积月累  现在有吃饭的家伙  每天也有很多活要干 ...

我赞成 “日积月累”。但是无论学什么,总要循序渐进,不能还不会走就学着跑。

在你发的《单片机向主机发送字符串》那帖中,huo_hu和wsmysyn两位已经讲得很清楚了。

此帖出自51单片机论坛

点评

这个论坛还是需要你参与解答问题的    详情 回复 发表于 2020-7-20 14:22
maychang老师  很久没看到你指导了   犯不着     详情 回复 发表于 2020-7-20 14:21
已经搞定了  谢谢大家的回复  详情 回复 发表于 2020-7-14 08:47
 
 
 

回复

3405

帖子

0

TA的资源

五彩晶圆(中级)

13
 
maychang 发表于 2020-7-13 19:00 我赞成 “日积月累”。但是无论学什么,总要循序渐进,不能还不会走就学着跑。 在你发的《 ...

已经搞定了  谢谢大家的回复

此帖出自51单片机论坛
 
 
 

回复

6111

帖子

4

TA的资源

版主

14
 

Operation_No=(Operation_No+1)%4; 为什么要加1再对4取余数呢?

Operation_No+1)在小于4时还是它本身,等于大于4就剩下余数。

这样可以实现加一,并且等于4时回到0.

实现Operation_No在0~3之间增一后回到0 循环点灯。

此帖出自51单片机论坛

点评

这个回答 很专业  详情 回复 发表于 2020-7-14 14:00
 
 
 

回复

3405

帖子

0

TA的资源

五彩晶圆(中级)

15
 
damiaa 发表于 2020-7-14 09:52 Operation_No=(Operation_No+1)%4; 为什么要加1再对4取余数呢? Operation_No+1)在小于4时还是它本 ...

这个回答 很专业

此帖出自51单片机论坛
 
 
 

回复

3405

帖子

0

TA的资源

五彩晶圆(中级)

16
 
maychang 发表于 2020-7-13 19:00 我赞成 “日积月累”。但是无论学什么,总要循序渐进,不能还不会走就学着跑。 在你发的《 ...

maychang老师  很久没看到你指导了   犯不着   

此帖出自51单片机论坛
 
 
 

回复

3405

帖子

0

TA的资源

五彩晶圆(中级)

17
 
maychang 发表于 2020-7-13 19:00 我赞成 “日积月累”。但是无论学什么,总要循序渐进,不能还不会走就学着跑。 在你发的《 ...

这个论坛还是需要你参与解答问题的  

此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表