找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1885|回复: 4
收起左侧

单片机与PC机的互相通信

[复制链接]
ID:189897 发表于 2017-5-4 13:09 | 显示全部楼层 |阅读模式
    目前我正在做有关单片机与PC机相互通信的小项目,我想在一个程序里面同时实现电脑发送数据控制单片机LED灯 ,单片机通过按一个键向电脑发送数据并在PC机上显示。这两个小程序我都分别实现出来了,可是不知道如何合并来实现这个功能

求大神解答 谢谢

《这是单片机通过按键向电脑发送数据》
#include <STC15Fxxxx.h>
unsigned char ad = -1;
bit Flag=1;
unsigned char code key_code[]={0x7e,0x7d,0x7b,0x77,0xbe,0xbd,0xbb,0xb7,0xde,0xdd,0xdb,0xd7,0xee,0xed,0xeb,0xe7};
void delay_ms(unsigned int xms)
{
u8 i,j;
for(i=xms;i>0;i--)
for(j=100;j>0;j++);
}
char keyscan()
{
char scan1,scan2,keycode,j,key;
key=-1;      
P0=0xf0;        
scan1=P0;      
if(scan1!= 0xf0)
{
  delay_ms(1200);
  scan1=P0;     
  if(scan1!=0xf0)
  {
   delay_ms(1200);
   P0=0x0f;      
   scan2=P0;        
   keycode=scan1|scan2;
   for(j=0;j<16;j++)   
   {
    if(keycode ==key_code[j])
    {
     key=j;
         while(P0!=0x0f);
     break;
    }
   }
  }
}
return (key);      
}
void init()
{
  SCON = 0x50;  
AUXR |= 0x40;  
AUXR &= 0xFE;  
TMOD &= 0x0F;  
TL1 = 0xE0;  
TH1 = 0xFE;  
ET1 = 0;  
TR1 = 1;
ES =1;
EA = 1;
REN=1;
}
void main (void)
{

P0M1 = 0; P0M0 = 0;
P1M1 = 0; P1M0 = 0;
P2M1 = 0; P2M0 = 0;
P3M1 = 0; P3M0 = 0;
P4M1 = 0; P4M0 = 0;
P5M1 = 0; P5M0 = 0;
P6M1 = 0; P6M0 = 0;
P7M1 = 0; P7M0 = 0;
init();  
while(1)
  {   
  ad = keyscan();   
    if(ad!=-1)
  {
   SBUF = ad;
  }
  
}
}
void ddd()  interrupt 4
{
    if(RI)
  {
    RI =0;
  }
  if(TI)
   TI =0;
}


《这是电脑控制单片机LED灯》
#include <STC15Fxxxx.h>
unsigned char a = 0x20;
void init()
{
  SCON = 0x50;  
AUXR |= 0x40;  
AUXR &= 0xFE;  
TMOD &= 0x0F;  
TL1 = 0xE0;  
TH1 = 0xFE;  
ET1 = 0;  
TR1 = 1;
ES =1;
EA = 1;
REN=1;
}
void main()
{
init();


    while(1)
  {
      if(a==0x00)
    P6 = 0x00;
    if(a==0x01)
     P6 = 0xff;
  }
}
void te() interrupt 4
{
  if(RI)
{
  a = SBUF;
  RI = 0;
}
if(TI)
{
   TI =0;
}
}

回复

使用道具 举报

ID:149451 发表于 2017-5-4 20:28 | 显示全部楼层
我想应该在PC机上写个管理程序(俗称上位机程序),通过串口或PCI接口等,连接你的下位机。
回复

使用道具 举报

ID:196662 发表于 2017-5-4 20:41 | 显示全部楼层
一个MIAN()函数,然后把两个功能合并实现就可以
回复

使用道具 举报

ID:123289 发表于 2017-5-5 11:16 | 显示全部楼层
主程序:
初始化
START:
检测是否有功能1的标记,有则调功能1;
检测是否有功能2的标记,有则调功能2;
……
检测是否有功能N的标记,有则调功能N;
进行入休眠(可不要此步)
返回到:START

子程序:
功能1;
功能2;
……
功能N;

事件发生(可在中断发生):
事件1发生,置功能1标记;
事件2发生,置功能2标记;
……
事件N发生,置功能N标记;
回复

使用道具 举报

ID:189897 发表于 2017-5-7 15:12 | 显示全部楼层
lidengjing 发表于 2017-5-4 20:41
一个MIAN()函数,然后把两个功能合并实现就可以

恩对 就是这样 刚开始试了不行 后来又行了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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