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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
sbit SER=P2^1;
  s  {* b" t- D! }5 }* afor(a=0;a<8;a++)3 l. e5 \3 I0 t( ~# W
{    SER=dat>>7;        - {% q8 v  Y$ O
    dat<<=1;        3 r2 T" }5 [' {' f7 V

( i/ g' ^/ O, F( C( z& b4 F}
3 {5 R; d5 M: A$ X7 N6 v( ~9 I% o
以上情况是将数据dat由最高位开始依次送到P2_1口,那么问题来了,dat始终是一个8位的二进制,P2_1口只接收dat的最高位还是最低位?我用Proteus试了下,不管给P2_1=0x80;还是P2_1=0x01;  P2_1始终是高电平;
( b/ ^6 K0 F8 ]$ y5 l% @! ^
  • TA的每日心情
    开心
    2022-1-29 15:03
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2022-3-22 11:20 | 只看该作者
    其实SER=dat>>7;这句并不是把dat位移后的值放到SER; y4 d& _* V' e/ k7 [1 D
    而是判断dat位移后的值是不是0
    % S4 ]3 s9 S- W8 l  m- I3 r不是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, g( ]3 w8 y* A, P2 U
    其实SER=dat>>7;这句并不是把dat位移后的值放到SER
    ' E( I' [' v2 E' _而是判断dat位移后的值是不是0
      ~* @. h5 W* R不是0就把SER置1, 是0 ...
    * R, J1 e; ~0 p- ^  _- Q
    明白了
    0 M3 H0 X, K# x0 ^3 M比如data=10101100' ?% k. v' |* V- s
    先向右移七位变成0000001 判断0或者1 这个时候SER=16 m! p$ f3 N/ b. s
    然后把data向左移1位 data变成了01011000," ~* s/ m# V8 S8 k9 k( |- p
    再向右移七位再判断。。。始终判断的是右移7位后的最高位,
    ; ?0 D/ Z7 p6 h0 }. T% ]$ k- A. L1 N
  • TA的每日心情
    开心
    2022-1-29 15:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    5#
    发表于 2022-3-22 11:21 | 只看该作者
    其实SER=dat>>7;这句并不是把dat位移后的值放到SER
    * O. L- `! g/ U7 h; G' j而是判断dat位移后的值是不是0
  • TA的每日心情
    擦汗
    2021-9-24 15:08
  • 签到天数: 1 天

    [LV.1]初来乍到

    6#
    发表于 2022-4-8 17:33 | 只看该作者
    # include <stdio.h>7 m- D$ ]; O( q& X1 R0 ^
    void main(void)
    " y( y% {. D0 h: a! d% ]{
    : K0 d! Q  i+ \& I        unsigned int a;
    1 p; d! i: ~6 f        unsigned char SER = 0x00;
    / S" r* `; m- a8 s. I  S8 O/ ?        unsigned char dat = 0x80;//1
    + x# f. u& A$ c8 l2 A) L        //unsigned char dat = 0x01;//0
    + L9 v" Q$ k+ g# V: i& C: e: t7 Z* f- L
            dat = dat >> 7;: Y6 T. ?5 g- [+ X' ]

    ! @1 q" Z$ g# F        for (a = 0; a < 8; a++)
    4 x5 w2 u* \2 I0 ~; H                {
    # Y; l* f) u: s, ]1 U, Z5 o6 P, ^' U& X* a& E6 q3 {& S
                    //SER = dat >> 7;
    " u- k. d1 v, p' k+ q4 q/ x                SER = dat;9 x" t9 J7 v, c" s  ^$ t% ~$ o

    % b/ B! O) l3 Q' A8 Y$ p# j. _                dat <<= 1;
    $ Q; l0 P# v5 a* v( t/ i! v0 W: K% s$ q2 [: s* P
                    }7 _9 S3 h2 q' J

    & r. Q& A* a. B: k; n( _  i- B* f9 b}
  • 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-6-30 01:33 , Processed in 0.109375 second(s), 27 queries , Gzip On.

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

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

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