2302|3

6

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

为什么我接受不到我发的东西那?????? [复制链接]

#include
#include
#define  NOP() _nop_()  /* 定义空指令 */
sbit LS138A = P2^2;          //定义138译码器的输入A脚由P2.2控制
sbit LS138B = P2^3;            //定义138译码器的输入脚B由P2.3控制
sbit LS138C = P2^4;         //定义138译码器的输入脚C由P2.4控制

void delay(unsigned int i);      //函数声名

//此表为 LED 的字模, 共阴数码管 0-9  -
unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
bit Flag;
unsigned int ReData,SenData;
unsigned int LedOut[10];
unsigned int buf[1];
unsigned int bu[1];
unsigned int a=0,b,c,count=0;

void main (void)
{
                        unsigned int i;
                         
                SCON = 0x50;      //REN=1允许串行接受状态,串口工作模式1               
                     TMOD = 0x20;      //定时器工作方式2                    
                          PCON = 0x80;                                                         
                          TH1  = 0xFD;     //baud*2  /* reload value 19200、数据位8、停止位1。效验位无 (11.0592)           
                        TL1 = 0xF3;  
                        TR1  = 1;                                                                          
                        ES   = 1;        //开串口中断                  
                        EA   = 1;        // 开总中断
                        if(Flag==1)
                                {
                                         for(i=0;i<1;i++)           //发送
                                                 {
                                                        SBUF=bu;         
                                                }
                                         
                                    while(TI==0);
                                TI=0;
                                        Flag=0;
                                }
       
        while(1)
        {          
       
                LedOut[0]=Disp_Tab[ReData%10000/1000];
                LedOut[1]=Disp_Tab[ReData%1000/100];
             LedOut[2]=Disp_Tab[ReData%100/10];
             LedOut[3]=Disp_Tab[ReData%10];
                                   
                for( i=0; i<4; i++)  //实现8位动态扫描循环 一直扫描
                {         
                        P0 = LedOut;  //将字模送到P0口显示
                                                 
                        switch(i)          //使用switch 语句控制位选  也可以是用查表的方式 学员可以试着自己修改                                  
                        {            
                                case 0:LS138A=0; LS138B=0; LS138C=0;  break;         
                            case 1:LS138A=1; LS138B=0; LS138C=0;  break;                    
                            case 2:LS138A=0; LS138B=1; LS138C=0;  break;
                            case 3:LS138A=1; LS138B=1; LS138C=0;  break;
//                                case 4:LS138A=0; LS138B=0; LS138C=1;  break;
//                                case 5:LS138A=1; LS138B=0; LS138C=1;  break;
//                                case 6:LS138A=0; LS138B=1; LS138C=1;  break;
//                                case 7:LS138A=1; LS138B=1; LS138C=1;  break;
                                default :break;
                        }
                        delay(100);       
                }
               
       
        }               
}



       
/****************************************************
               串口中断程序
//******************************************************/
void ser_int (void) interrupt 4 using 1
        {

                if(        RI==1)
                                                                                          
                                 buf[count]=SBUF-0x30;  //SUBF接受
                                RI=0;
                                count++;

                                if(count>1)
                                        {
                                                ReData=(buf[0])*10+(buf[1]);
                                                bu[1]=ReData;
                                                count=0;
                                                 Flag=1;
                                               
                                         }
                                                                                                                                     
        }
          void delay(unsigned int i)
{
    char j;
    for(i; i > 0; i--)
        for(j = 200; j > 0; j--);
}
此帖出自单片机论坛

最新回复

不是, 你翻一下书了 buf[1] 只有 1个位置 --> buf[0]  详情 回复 发表于 2013-9-20 10:21
点赞 关注
 

回复
举报

662

帖子

0

TA的资源

纯净的硅(初级)

沙发
 
数组的使用似乎有错, 宣告了 buf[1] , 这只留了一个位置, 但是程序里面使用了:
ReData=(buf[0])*10+(buf[1]);
此帖出自单片机论坛

点评

buf[1]是两位啊,0和1啊!!  详情 回复 发表于 2013-9-20 09:55
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发slotg 的帖子

buf[1]是两位啊,0和1啊!!
此帖出自单片机论坛

点评

不是, 你翻一下书了 buf[1] 只有 1个位置 --> buf[0]  详情 回复 发表于 2013-9-20 10:21
 
 
 

回复

662

帖子

0

TA的资源

纯净的硅(初级)

4
 

回复 板凳haochangxu 的帖子

不是, 你翻一下书了
buf[1] 只有 1个位置 --> buf[0]
此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表