找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 459|回复: 0
打印 上一主题 下一主题
收起左侧

LabVIEW与单片机两路模拟收发

[复制链接]
跳转到指定楼层
楼主


单片机源程序如下:
/*******************************************************************************  
* 文件名称:LabVIEW与单片机串口收发测试
*******************************************************************************/

#include <STC8H.H>
#include <intrins.H>

#define uchar unsigned char
#define uint unsigned int        
        
uchar i,num,num1,num2;
uchar sendBuf[4];
bit flag=0;
bit bz=0;

void delayms(int ms);
void allinit();
void UartInit(void);

void main()
{
        allinit();
        UartInit();
        EA=1;
        P07=0;
        
        while(1)
        {
          if(num=='A')P00=0;//LED亮
                else if(num=='B')P00=1;//灭
                if(num=='C')P01=0;
                else if(num=='D')P01=1;
               
                num1=20;  //模拟两路采集值
                num2=40;
         
                sendBuf[0]=num1/10+'0';
                sendBuf[1]=num1%10+'0';
                sendBuf[2]=num2/10+'0';
                sendBuf[3]=num2%10+'0';
               
                if(num=='R')//接受到采集指令
                {
                        flag=1;
                }
               
                if(bz==0)
                {
                        bz=1;
                        flag=1;
                }   
               
                if(flag==1)
                {        
                  for(i=0;i<4;i++)
                  {
                          SBUF=sendBuf[ i];
                          while(TI==0);
                          TI=0;
                  }
            }
        }
}

//----------------------------
//UART1 中断服务程序
//----------------------------
void Uart1() interrupt  4 using 1
{        
        if (RI)                                //检测串口1接收中断
        {
                RI = 0;                        //清除串口1接收中断请求位
                num=SBUF;
                if(num=='S')
                {
                        flag=0;
                }
        }
        if (TI)
        {
                TI=0;
        }
}   

void UartInit(void)                //9600bps@11.0592MHz
{
        SCON = 0x50;                //8位数据,可变波特率
        AUXR &= 0xBF;                //定时器时钟12T模式
        AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
        TMOD &= 0x0F;                //设置定时器模式
        TL1 = 0xE8;                        //设置定时初始值
        TH1 = 0xFF;                        //设置定时初始值
        ET1 = 0;                        //禁止定时器中断
        TR1 = 1;                        //定时器1开始计时
        ES = 1;        
}

void delayms(int ms)
{
        int i,j;
        for(i=ms;i>0;i--)
                for(j=845;j>0;j--);
}

void allinit()
{
        P0M0=0X00;P0M1=0X00;
        P1M0=0X00;P1M1=0X00;
        P2M0=0X00;P2M1=0X00;
        P3M0=0X00;P3M1=0X00;
        P4M0=0X00;P4M1=0X00;
        P5M0=0X00;P5M1=0X00;
}

vi文件: 温控.zip (19.24 KB, 下载次数: 0)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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