找回密码
 立即注册
楼主: 电子D***

冲哥32位8051视频教程疑问解答贴

 火.. [复制链接]
  • TA的每日心情
    开心
    昨天 08:11
  • 签到天数: 88 天

    [LV.6]常住居民II

    38

    主题

    982

    回帖

    6753

    积分

    荣誉版主

    冲哥视频教程和各种开源资料QQ交流群884047237,可群

    积分
    6753
    QQ
     楼主| 发表于 2023-3-14 16:45:35 | 显示全部楼层
    lclbf 发表于 2023-3-14 11:50
    剩下的P0口还有4位,我都置1,用数组是可以,但是剩下的4个口我去做其他用途,是不是要受这里置1影响呢? ...

    用数组输出的时候要注意一下只操作低四位就好了:假设你是高电平有效,那么操作低四位就要这么操作
    P0 &= 0XF0;  //清除低四位
    P0 |=  位选;  //写入低四位
    这样高四位的引脚就不会受干扰了

  • TA的每日心情
    开心
    昨天 08:11
  • 签到天数: 88 天

    [LV.6]常住居民II

    38

    主题

    982

    回帖

    6753

    积分

    荣誉版主

    冲哥视频教程和各种开源资料QQ交流群884047237,可群

    积分
    6753
    QQ
     楼主| 发表于 2023-3-15 16:04:03 | 显示全部楼层
    lclbf 发表于 2023-3-15 15:53
    假设我是用的P00 P02 P04 P05是不是就可以下面这样
    P0 &= 0XAC;  //清除P01 P03 P06 P07
    P0 |=  0XAC;  / ...

    思路没错,但是代码错了.



    "假设我是用的P00 P02 P04 P05是不是就可以下面这样
    P0 &= 0XAC;  //清除P01 P03 P06 P07
    P0 |=  0XAC;  //写入P00 P02 P04 P05
    这样理解错了没有?“


    针对你的P01 P03 P06 P07 ,高位在前二进制应该是 1100 1010(16进制就是0xCA),这里假设是写1表示有效的话,那你清除就该写 P0 = ~0XCA;
    例如打开P01,那应该在接着写一句 P0 |=  0x02;
  • TA的每日心情
    开心
    昨天 08:11
  • 签到天数: 88 天

    [LV.6]常住居民II

    38

    主题

    982

    回帖

    6753

    积分

    荣誉版主

    冲哥视频教程和各种开源资料QQ交流群884047237,可群

    积分
    6753
    QQ
     楼主| 发表于 2023-3-15 16:13:53 | 显示全部楼层
    lclbf 发表于 2023-3-15 16:11
    我把高位放在最后了。一定要高位在前,不能高位在最后吗?

    引脚高位在前还是低位在前都没事的,随意,引脚对上就可以~
    1.png
    你这边&= 和|=参数居然是同一个,说明有问题~自己参数对上就行
    回复 支持 0 反对 1 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:11
  • 签到天数: 88 天

    [LV.6]常住居民II

    38

    主题

    982

    回帖

    6753

    积分

    荣誉版主

    冲哥视频教程和各种开源资料QQ交流群884047237,可群

    积分
    6753
    QQ
     楼主| 发表于 2023-3-15 16:42:07 | 显示全部楼层
    lclbf 发表于 2023-3-15 16:25
    "假设我是用的P00 P02 P04 P05,低位在前,低电平有效
    P0 &= 0XAC;  //清除P01 P03 P06 P07
    P0 |=  0X53; ...

    P0 &= 0XAC;  //清除P01 P03 P06 P07

    这里你可能有个误区
    P0 = 0X80;这么一行输出是P07=1,别的引脚都是输出0的,这个顺序反不过来的。要想P00输出1要写P0 = 0X01;

    该用户从未签到

    9

    主题

    293

    回帖

    1696

    积分

    版主

    积分
    1696
    QQ
    发表于 2023-3-16 10:08:25 | 显示全部楼层
    lclbf 发表于 2023-3-15 17:49
    意思是只能高位在前,低位在后

    看手册的寄存器定义,硬件决定了高位在前,低位在后
    1.png
    QQ:1463035472,微信:19952583954

    该用户从未签到

    1

    主题

    14

    回帖

    43

    积分

    新手上路

    积分
    43
    发表于 2023-3-22 11:06:55 | 显示全部楼层
    来学习 ~
    回复 送花

    使用道具 举报

    该用户从未签到

    0

    主题

    3

    回帖

    14

    积分

    新手上路

    积分
    14
    发表于 2023-3-22 13:01:51 | 显示全部楼层
    请问一下,STC32G单片机CAN和串口同时使用,如何获得精确的任意常用波特率?用CAN的时候官方给的是24MHz主频,用串口的时候官方给的是22.1184MHz主频,这个矛盾如何解决?
  • TA的每日心情
    开心
    昨天 08:11
  • 签到天数: 88 天

    [LV.6]常住居民II

    38

    主题

    982

    回帖

    6753

    积分

    荣誉版主

    冲哥视频教程和各种开源资料QQ交流群884047237,可群

    积分
    6753
    QQ
     楼主| 发表于 2023-3-22 13:10:55 | 显示全部楼层
    HSU9527 发表于 2023-3-22 13:01
    请问一下,STC32G单片机CAN和串口同时使用,如何获得精确的任意常用波特率?用CAN的时候官方给的是24MHz主 ...

    看你实际要跑多少的波特率,在确定主频。
    24M主频,9600的波特率误差几乎为0
    1.png

    该用户从未签到

    0

    主题

    3

    回帖

    14

    积分

    新手上路

    积分
    14
    发表于 2023-3-22 13:34:59 | 显示全部楼层
    电子DIY小家 发表于 2023-3-22 13:10
    看你实际要跑多少的波特率,在确定主频。
    24M主频,9600的波特率误差几乎为0

    假如串口波特率115200,CAN波特率500K,用哪个主频没有误差?
  • TA的每日心情
    开心
    昨天 08:11
  • 签到天数: 88 天

    [LV.6]常住居民II

    38

    主题

    982

    回帖

    6753

    积分

    荣誉版主

    冲哥视频教程和各种开源资料QQ交流群884047237,可群

    积分
    6753
    QQ
     楼主| 发表于 2023-3-23 09:13:56 | 显示全部楼层
    HSU9527 发表于 2023-3-22 13:34
    假如串口波特率115200,CAN波特率500K,用哪个主频没有误差?

    看下来都有一点,24M的话串口115200波特率是百分之0.几,也可以接收吧。想办法看看哪个波特率能改下,找个折中的
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-4-26 08:14 , Processed in 0.070198 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表