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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
sbit SER=P2^1;
3 Q) H: `- b. Cfor(a=0;a<8;a++); }: b, y! Y5 F: c, j
{    SER=dat>>7;        
% f" p$ z, `+ E, U/ t- c0 [0 d    dat<<=1;        9 Z+ p% s  B9 C# L7 P9 E
& H2 h3 a! U) E* @8 p: U
}& _) X" n0 d6 ~& S( p) g
- ~6 A9 J* X( W; T$ O
以上情况是将数据dat由最高位开始依次送到P2_1口,那么问题来了,dat始终是一个8位的二进制,P2_1口只接收dat的最高位还是最低位?我用Proteus试了下,不管给P2_1=0x80;还是P2_1=0x01;  P2_1始终是高电平;
9 N- {1 U4 R! r. S4 e/ `2 E
  • TA的每日心情
    开心
    2022-1-29 15:03
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2022-3-22 11:20 | 只看该作者
    其实SER=dat>>7;这句并不是把dat位移后的值放到SER1 t5 e, J; E& x" c0 Z) Y
    而是判断dat位移后的值是不是0; Q' X) O& y+ c2 Q8 ]0 V
    不是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:201 B7 E; l* o# s; m8 V
    其实SER=dat>>7;这句并不是把dat位移后的值放到SER! N1 @" b7 ~4 `4 _- j" f1 G  k/ H
    而是判断dat位移后的值是不是0
    . T0 \. K& \& d0 |# V5 m不是0就把SER置1, 是0 ...

    2 q* _9 [. q- m% n+ |明白了
    5 s' U: |( X  W: s- Z比如data=10101100
    ( b8 H; s1 j* {  ^先向右移七位变成0000001 判断0或者1 这个时候SER=1
    ' x* m7 t4 }* v1 l5 L然后把data向左移1位 data变成了01011000,
    8 u  M$ H/ \1 w' r再向右移七位再判断。。。始终判断的是右移7位后的最高位,
    / \4 d" h, d% O5 V4 v# v
  • TA的每日心情
    开心
    2022-1-29 15:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    5#
    发表于 2022-3-22 11:21 | 只看该作者
    其实SER=dat>>7;这句并不是把dat位移后的值放到SER: B# ]6 h! @& _" O% F3 ]
    而是判断dat位移后的值是不是0
  • TA的每日心情
    擦汗
    2021-9-24 15:08
  • 签到天数: 1 天

    [LV.1]初来乍到

    6#
    发表于 2022-4-8 17:33 | 只看该作者
    # include <stdio.h>
    / S# s6 R: B) K& K  i% Pvoid main(void)
    9 }8 U" Z0 {) f: C5 x{: b0 G+ J$ K; q4 `( u# X
            unsigned int a;6 G3 p4 e) @: y
            unsigned char SER = 0x00;/ f) K. x+ M, s. @! c
            unsigned char dat = 0x80;//1
    7 S8 i, m  z. _: F0 N) n$ n        //unsigned char dat = 0x01;//0
    ; I: Y/ ?2 S! f5 j% H) R: d, D- q9 p. z: i; E* |6 q" O. R2 v
            dat = dat >> 7;
    , ^; m; Z6 [! t5 ]8 Z9 M, m
    ! H- W9 Q! C1 D4 m! ^8 c        for (a = 0; a < 8; a++)  T* O, `9 w0 x, p5 V
                    { % a9 G# ^& j9 }5 h3 y. s, m3 [! X
    $ K1 ~3 U" b. b2 R
                    //SER = dat >> 7;
    # x, E0 ]( v" k5 g& {0 Q. i1 Q$ {6 H                SER = dat;
    ' x( U& |' |$ |! H5 S
    / I/ z; M, E. x4 m  k; E+ D                dat <<= 1;# h/ x: p, F. {  V* `

    ; Y% X8 K* Z: `2 c' Y                }
    ! e( e. i9 q& ]2 e
    ! i0 S0 }' Q! ~9 h( }4 V0 S}
  • 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-10-10 01:59 , Processed in 0.140625 second(s), 24 queries , Gzip On.

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

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

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