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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
sbit SER=P2^1;4 s; B1 }" w: z$ r* O% Y- _& j+ V
for(a=0;a<8;a++)
: ]+ ]* o: K' p6 b0 t, |{    SER=dat>>7;        6 X/ j% ]9 \3 A
    dat<<=1;        $ ^$ Q0 W. \/ A7 m6 u

6 G' A: n% A. S1 w1 y2 a}  U, f" _8 r  \6 M  a, h- h1 ?0 n

2 H6 l$ }2 S: e6 F$ Q以上情况是将数据dat由最高位开始依次送到P2_1口,那么问题来了,dat始终是一个8位的二进制,P2_1口只接收dat的最高位还是最低位?我用Proteus试了下,不管给P2_1=0x80;还是P2_1=0x01;  P2_1始终是高电平;" {8 ~7 Y8 h$ M
  • TA的每日心情
    开心
    2022-1-29 15:03
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2022-3-22 11:20 | 只看该作者
    其实SER=dat>>7;这句并不是把dat位移后的值放到SER8 Q5 H! g+ _+ S) `2 }3 J
    而是判断dat位移后的值是不是0
    6 k. \' c" y$ Q: w3 p' O不是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:200 N$ v: k' p7 {' Y0 P; W' ]
    其实SER=dat>>7;这句并不是把dat位移后的值放到SER* T9 ^% e& k# K  Y, I- \- \
    而是判断dat位移后的值是不是0. x# O, s! M5 h2 u; C) B. Y
    不是0就把SER置1, 是0 ...

    0 L9 V) X: s8 E/ I, o6 M明白了$ c' A' a$ N% M- N+ G6 c
    比如data=10101100
    & v$ e& u7 |3 D- ~' T4 H9 b3 [- P先向右移七位变成0000001 判断0或者1 这个时候SER=1+ h, t$ I+ i( E! f! x6 l
    然后把data向左移1位 data变成了01011000,; b3 z# j: M! L# u
    再向右移七位再判断。。。始终判断的是右移7位后的最高位,
    6 m" t( S# D' z
  • TA的每日心情
    开心
    2022-1-29 15:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    5#
    发表于 2022-3-22 11:21 | 只看该作者
    其实SER=dat>>7;这句并不是把dat位移后的值放到SER
    6 A' V/ B2 v3 X8 |7 l& V而是判断dat位移后的值是不是0
  • TA的每日心情
    擦汗
    2021-9-24 15:08
  • 签到天数: 1 天

    [LV.1]初来乍到

    6#
    发表于 2022-4-8 17:33 | 只看该作者
    # include <stdio.h>
    0 G7 C+ Z7 R! K9 I1 P) ?void main(void)' I7 G) h8 }1 q# X* k1 D& P) J
    {
    - G: t6 y, a: _2 Q$ A        unsigned int a;
    + _+ E* T- o8 a& [7 D        unsigned char SER = 0x00;( S# t1 J; i( T! v/ }1 Y9 O; |
            unsigned char dat = 0x80;//1: r5 h- W$ r4 c. |: a
            //unsigned char dat = 0x01;//0
    5 y) p2 H3 X, T# Z/ a6 q2 }; E; W% ?2 t  w1 b' P2 R. p
            dat = dat >> 7;) n! w* Y7 A9 o

    1 T" W/ B. j- K6 k/ g( |# t* P        for (a = 0; a < 8; a++)
    ) E9 Z/ l& S% e$ S6 U8 H                { ' D# E9 D) f$ V

      B4 O1 B0 P/ M0 ^0 Z" i                //SER = dat >> 7;
    - I! N& F1 [5 T, I( C: i! J                SER = dat;  M3 u: K( R0 C$ z% Y% x' s( Z) F

    / f( q, t* R; n1 g                dat <<= 1;
    : P6 [4 l0 ]& K. x+ I: ?5 W) ]2 J
    . a1 X- k$ a( L. ^                }3 ]+ N# C8 E+ r4 L9 w7 {

    # d9 ~9 V7 P# ^+ l/ L( n+ r}
  • 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-7-18 11:00 , Processed in 0.140625 second(s), 27 queries , Gzip On.

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

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

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