打印

51单片机串口输出问题

[复制链接]
1664|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ymcprophet|  楼主 | 2008-3-19 16:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "reg52.h"
#include "stdio.h"
sbit P3_0=P3^0;
sbit P3_7=P3^7;
#define  CTH1 0xfd      //定时器1,波特率设置9600
#define  CTL1 0xfd
#define  CTH0 0xee      //定时器0 5ms(用的是定时器MODE2)
#define  CTL0 0x00
void mDelay(unsigned char Delay)
 {
   unsigned int i;
   for(;Delay>0;Delay--)
      {
         for(i=0;i<4004;i++)
           {;}
      }
 }
void main()
  {unsigned char dout;
  
     P3_7=0;
     TMOD=0x21;
     TH1=CTH1;
     TL1=CTL1; 
     SCON=0x50;
     PCON=0;
     TR1=1; 
     TR0=1;  
     RI=0;
     TI=1;
     ET0=1; 
     ES=1;  
     EA=1; 
    
    printf(".....start..... ");
     while(1)
        {
              P3_7=!P3_7;
              mDelay(10000);
         P3_0=P3_7;
              mDelay(10000);
         dout=P3_0;
         mDelay(10000);
         printf("%d ",dout);
         mDelay(10000);
       
     }
    
  }  
 //目的:从P3_7口处引入数字量,0101这种二进制形式
   //把这些二进制数通过串口发出去
 //困扰:dout输出为什么是256?而不是1
 //是不是因为P3_0,P3_7,都是位
 //而dout是整型,怎么改才能让 
 //从我问的问题也能看出我学的不好,但还是希望能有热心的朋友指点一下
 //非常感谢
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

相关帖子

沙发
xhtxzxw| | 2008-3-19 20:21 | 只看该作者

嘿嘿

谁说是256?谁说dout是整型?你在KEIL里仿真运行一下看,dout应该在0和1之间来回变化

使用特权

评论回复
板凳
zhlu8866| | 2008-3-20 12:00 | 只看该作者

对啊

lz 程序里的dout不是unsigned char 吗

使用特权

评论回复
地板
ymcprophet|  楼主 | 2008-3-21 15:46 | 只看该作者

丢人呵呵

原来仿真的时候dout是01变化的,但要是用串口看会看到
本该1的时候它出现256
我就想要dout输出0或1,干嘛要把它设为unsigned char,我
改回int 就可以了,呵呵基础太不好了,大伙见笑了
谢谢能给我回帖的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

10

帖子

0

粉丝