找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3139|回复: 5
收起左侧

单片机独立按键控制双机通信的输入程序问题

[复制链接]
ID:423663 发表于 2018-11-22 11:56 | 显示全部楼层 |阅读模式
/******************************************************************
串口通信:两块单片机之间的按键通信,输入   
****************************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar i,z,x,c,v;
/***************************************************************
延时函数
**************************************************************/
void delayms(uint xms)
   {
    uint i,j;
        for(i=xms;i>0;i--)
        for(j=100;j>0;j--);
    }
/***************************************************************
初始化
*****************************************************************/
void inti()
{
  TMOD=0x20;                 //设置T1定时器工作方式
  TH1=0xfd;                          //给T1装初值
  TL1=0xfd;                          //同上
  TR1=1;                                //启动T1定时器
// REN=1;          先设置串口模式,再允许串口接收
  SM0=0;                          //设定串口工作方式1
  SM1=1;                                //同上
  REN=1;                                //允许串口接收
  EA=1;                                         //开总中断
  ES=1;                                          //开串口中断
  }
/*************************************************************
主函数
***************************************************************/
void main()
{
   inti();
   key_scan();
}                        
/**************************************************************
按键扫描
****************************************************************/
void key_scan()
{
   if(key1==0)
     {
         delay(10);
         if(key1==0)
         {
                   Send("z");
                   delay(10);         
         }
         }
         if(key2==0)
     {
         delay(10);
         if(key2==0)
         {
                   Send("x");
                   delay(10);         
         }
         }
         if(key3==0)
     {
         delay(10);
         if(key3==0)
         {
                  Send("c");
                   delay(10);         
         }
         }
         if(key4==0)
     {
         delay(10);
         if(key4==0)
         {
                  Send("v");
                   delay(10);         
         }
         }
}        
/*****************************************************************
数据发送
****************************************************************/
void Send(unsigned char dat)
{
   SBUF=dat;
   while(TI==0);
   TI=0;
}
为什么用不了,,求指教
回复

使用道具 举报

ID:232524 发表于 2018-11-22 13:17 | 显示全部楼层
你这发送字符应该是Send('x');
单引号
回复

使用道具 举报

ID:423663 发表于 2018-11-22 14:59 | 显示全部楼层
谢谢了,已改正,但是错误还有
1.C(39): warning C206: 'key_scan': missing function-prototype
1.C(55): error C231: 'key_scan': redefinition
1.C(56): error C202: 'key1': undefined identifier
回复

使用道具 举报

ID:232524 发表于 2018-11-22 20:48 | 显示全部楼层
qwertytyui 发表于 2018-11-22 14:59
谢谢了,已改正,但是错误还有
1.C(39): warning C206: 'key_scan': missing function-prototype
1.C(55) ...

你这key没有定义按键啊,要先位定义
回复

使用道具 举报

ID:213173 发表于 2018-11-22 20:56 | 显示全部楼层
void main()
{
   inti();
        while(1)
        {
          key_scan();
        }
}
回复

使用道具 举报

ID:213173 发表于 2018-11-22 21:08 | 显示全部楼层
/******************************************************************
串口通信:两块单片机之间的按键通信,输入   
****************************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;

uchar i,z,x,c,v;
/***************************************************************
延时函数
**************************************************************/
void delayms(uint xms)
   {
    uint i,j;
        for(i=xms;i>0;i--)
        for(j=100;j>0;j--);
    }
/***************************************************************
初始化
*****************************************************************/
void inti()
{
  TMOD=0x20;                 //设置T1定时器工作方式
  TH1=0xfd;                          //给T1装初值
  TL1=0xfd;                          //同上
  TR1=1;                                //启动T1定时器
// REN=1;          先设置串口模式,再允许串口接收
  SM0=0;                          //设定串口工作方式1
  SM1=1;                                //同上
  REN=1;                                //允许串口接收
  EA=1;                                         //开总中断
  ES=1;                                          //开串口中断
}
/*****************************************************************
数据发送
****************************************************************/
void Send(unsigned char dat)
{
   SBUF=dat;
   while(TI==0);
   TI=0;
}                        
/**************************************************************
按键扫描
****************************************************************/
void key_scan()
{
   if(key1==0)
     {
         delayms(10);
         if(key1==0)
         {
                   Send("z");
                   delayms(10);         
         }
         }
         if(key2==0)
     {
         delayms(10);
         if(key2==0)
         {
                   Send("x");
                   delayms(10);         
         }
         }
         if(key3==0)
     {
         delayms(10);
         if(key3==0)
         {
                  Send("c");
                   delayms(10);         
         }
         }
         if(key4==0)
     {
         delayms(10);
         if(key4==0)
         {
                  Send("v");
                   delayms(10);         
         }
         }
}        
/*************************************************************
主函数
***************************************************************/
void main()
{
   inti();
        while(1)
        {
          key_scan();
        }
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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