2511|1

72

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

MSM7512 [复制链接]

有谁用过msm7512啊,我是写软件的,已经写好了,但硬件还没做出来,所以还不能调试,我把我的程序贴上来大家看一下是对的不

先弄发送部分的

#include <reg51.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

sbit key1=P1^3;
sbit key2=P1^4; //按键按一下发送一个0
sbit key3=P1^5;   //发送一个1

void delay(int ms)
{
    while(ms--)
 {
      uchar i;
   for(i=0;i<250;i++) 
   {
     _nop_();     
  _nop_();
  _nop_();
  _nop_();
   }
 }
}

void send()
{
 P0=0x08; //smod1,smod(p0.0,p0.1)为00,rs(P0^2)为低电平允许发送,cd(P0^3)保持为高电平
 PCON=0x00;
 EA=1;
 ET1=1;
 TMOD=0x20;
 SCON=0x72;
 TH1=0xE8;
 TL1=0XE8; //1200bit/s
 TR1=1;
 //TI=0;
}

void fasong()
{
    key1=0;

    if (key2 == 0)
 {
  delay(5);
  while(!key2);
     delay(5); 
  while(TI == 0);
  SBUF = '0';
  TI = 0;
 } 
 if (key3 == 0)
 {
  delay(5);
  while(!key3);
     delay(5); 
  while(TI == 0);
  SBUF = '1';
  TI = 0;
 }
}
void main()
{
 send();
 while(1)
 {
  fasong();
 }
}
 

此帖出自51单片机论坛
点赞 关注
 

回复
举报

72

帖子

0

TA的资源

一粒金砂(高级)

沙发
 

回复 楼主 51新手 的帖子

接收的部分如下: 功能是控制接收部分一个灯的亮度

#include

#define uint unsigned int
#define uchar unsigned char

int a,b,x;
sbit led=P0^0;
void Com_Init(void)
{
         P1=0x0D; //表示不允许发送,接收工作在01
     TMOD = 0x21;   //一个产生pwm波,一个是波特率
     PCON = 0x00;   //不倍频
     SCON = 0x50;        //串口工作在方式1,并且启动串行接收       
     TH1 = 0xE8;    //设置波特率 1200
     TL1 = 0xE8;
         TH0=0xFC;
         TL0=0x66;
         TR0=1;
         EA=1;
            ET0=1; //允许定时器0中断
     TR1 = 1;                //启动定时器1
         ES = 1;                //开串口中断
         EA = 1;                //开总中断               
}

void Com_Int(void) interrupt 4
{
        EA = 0;
        while(RI==0);
        x = SBUF;                
        RI = 0;
        if(x == '1')
        {
                b++;
        }
        if (x == '0')
        {
            b--;
        }         
        EA = 1;
}

void led1() interrupt 1
{
        TH0=0xFC;
        TL0=0x66;
        a++;
        if (a < b)
        {
                led= 1;
        }
        else
        {
                led=0;
        }
        if (a == 10)
        {
                a=0;
        }
}

void main()
{
        a=0;
        b=1;
        Com_Init();
        while(1);
}
此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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