找回密码
 注册
关于网站域名变更的通知
查看: 364|回复: 6
打印 上一主题 下一主题

一个给单片机io口赋值的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-3-22 10:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
sbit SER=P2^1;
6 H. g0 b. Y8 Pfor(a=0;a<8;a++)# O6 o+ i! N+ d7 U1 k! Z0 I! G
{    SER=dat>>7;        3 |9 `) j" O9 }; Y. ]
    dat<<=1;        
+ P2 Q# I' Z. ?+ n9 ^
; h& A# j3 j: E5 Z9 X6 M}2 j8 J7 l4 R9 o1 \

3 Z( _4 a" H2 s以上情况是将数据dat由最高位开始依次送到P2_1口,那么问题来了,dat始终是一个8位的二进制,P2_1口只接收dat的最高位还是最低位?我用Proteus试了下,不管给P2_1=0x80;还是P2_1=0x01;  P2_1始终是高电平;
1 v' [, Z2 W' @! V# c/ H, Q& p, Z& O
  • TA的每日心情
    开心
    2022-1-29 15:03
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2022-3-22 11:20 | 只看该作者
    其实SER=dat>>7;这句并不是把dat位移后的值放到SER
      d" u. l6 ~- l- V8 b. l) p* _而是判断dat位移后的值是不是0
    & ?9 z1 q& Q9 s不是0就把SER置1, 是0就置0

    点评

    明白了 比如data=10101100 先向右移七位变成0000001 判断0或者1 这个时候SER=1 然后把data向左移1位 data变成了01011000, 再向右移七位再判断。。。始终判断的是右移7位后的最高位,  详情 回复 发表于 2022-3-22 11:21
  • TA的每日心情
    开心
    2022-1-29 15:03
  • 签到天数: 2 天

    [LV.1]初来乍到

    3#
    发表于 2022-3-22 11:20 | 只看该作者
    需要强制转换成位,SER=(bit)(dat>>7);

    该用户从未签到

    4#
     楼主| 发表于 2022-3-22 11:21 | 只看该作者
    duhe3hfu 发表于 2022-3-22 11:20! K) b; w& Y5 f4 e( y
    其实SER=dat>>7;这句并不是把dat位移后的值放到SER
    8 r7 O6 s0 ]; Z而是判断dat位移后的值是不是0
    # C0 `& q! j9 ]. f不是0就把SER置1, 是0 ...
    , m3 [# Z- O$ F% u! k, Y
    明白了$ t/ Q5 [2 Q/ H' Z6 ^
    比如data=10101100! k6 R3 ~6 ^9 w' Y5 i! a
    先向右移七位变成0000001 判断0或者1 这个时候SER=1
    " r3 P; e6 |3 z! b; ~然后把data向左移1位 data变成了01011000,9 s, }3 h8 I- X5 J- H
    再向右移七位再判断。。。始终判断的是右移7位后的最高位,( a- [0 i" w- z1 Q9 T! }. O
  • TA的每日心情
    开心
    2022-1-29 15:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    5#
    发表于 2022-3-22 11:21 | 只看该作者
    其实SER=dat>>7;这句并不是把dat位移后的值放到SER
    9 E2 D6 G$ ]4 t/ ?1 B+ S而是判断dat位移后的值是不是0
  • TA的每日心情
    擦汗
    2021-9-24 15:08
  • 签到天数: 1 天

    [LV.1]初来乍到

    6#
    发表于 2022-4-8 17:33 | 只看该作者
    # include <stdio.h>5 Z0 g, u8 l- k& A- I2 y; ~
    void main(void)3 y) a' Q0 D8 M2 m: O7 ?
    {: f) A& k" Y4 h6 M& I; c4 [; a
            unsigned int a;
    / d. r& `: z$ c        unsigned char SER = 0x00;* x( h/ U; s% m; W( P, T
            unsigned char dat = 0x80;//1
    6 r* x4 F5 Y3 i/ A! R0 R        //unsigned char dat = 0x01;//0
    % N6 }7 a0 j5 U' D- N2 {$ U- x+ u
    $ q4 d, X: O% h) l& C) X0 {' \        dat = dat >> 7;/ R/ w1 [- Q' X5 d& D- t9 t

      u6 K5 _# V7 {; c$ ~        for (a = 0; a < 8; a++)8 a0 `' t: J; j0 \6 D# d* I
                    { 2 s! M; |% p" R8 Q. f" `; ?, h
    6 r8 n: I: [% [7 C* {3 T
                    //SER = dat >> 7;& m1 K( K! z" \& a& T, f0 e
                    SER = dat;
    ; I7 L  a; n' X+ w& J4 H5 E0 S' q2 d. n$ k- P4 C# H) M" L6 ^2 k
                    dat <<= 1;# G# ~9 B) a$ Y

    1 \) }+ a/ f- t- x, V0 e                }: i4 @6 c5 _+ x  w& f! k1 [( y) S! F
      o1 X* _3 s; _4 j  {; D
    }
  • TA的每日心情
    奋斗
    2023-11-14 15:58
  • 签到天数: 230 天

    [LV.7]常住居民III

    7#
    发表于 2022-4-12 15:40 | 只看该作者
    看的明白了
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-5 03:58 , Processed in 0.125000 second(s), 27 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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