522|16

1152

帖子

0

资源

一粒金砂(高级)

甲机发送控制命令字符

 
/*        名称:甲机发送控制命令字符
        说明:甲单片机负责向外发送控制命令字符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?这个啥意思
 
 
 
 
 
 
 
此帖出自51单片机论坛
图片2.png

回复

2235

帖子

1

资源

五彩晶圆(初级)

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

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

个人签名人已离开,无事别找,找也找不到。

回复

3714

帖子

0

资源

版主

pcon是上电初始化配置的,之后的收发是固定的

点评

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

回复

1万

帖子

0

资源

超级版主

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

 

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

点评

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

回复

1152

帖子

0

资源

一粒金砂(高级)

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

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


回复

1152

帖子

0

资源

一粒金砂(高级)

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

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

点评

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

回复

1152

帖子

0

资源

一粒金砂(高级)

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

火哥   2和3也回复下 


回复

1万

帖子

0

资源

超级版主

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

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

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

点评

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

回复

1万

帖子

0

资源

超级版主

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

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

点评

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

回复

1152

帖子

0

资源

一粒金砂(高级)

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

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


回复

1152

帖子

0

资源

一粒金砂(高级)

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

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

点评

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

回复

1万

帖子

0

资源

超级版主

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

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

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

点评

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

回复

1152

帖子

0

资源

一粒金砂(高级)

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

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


回复

3152

帖子

1

资源

版主

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

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

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

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

点评

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

回复

1152

帖子

0

资源

一粒金砂(高级)

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

这个回答 很专业


回复

1152

帖子

0

资源

一粒金砂(高级)

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

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


回复

1152

帖子

0

资源

一粒金砂(高级)

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

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


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

关闭
站长推荐上一条 1/6 下一条

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

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

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

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