导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→初学者:help me!

* 11122: 初学者:help me!

   woodvase 
woodvase发表的帖子 

 初学者:help me!
我在做一个键盘和主机通信的项目,现在程序写完了,做了实验板,但是不能实现功能,但
是程序我觉得可以了,谁帮我一下呢?下面是我的chengxu ,高手请指教!
//键盘侧程序
#include <stdio.h> 
#include <string.h>
#include <delay.h>
#include <90s2313.h> 
/************************************************/ 
int test_cnt=0;
unsigned int Kb_cnt=0; 
/************************************************/                              
                 
void Init2313(void)//初始化2313

  SREG=0x80;//允许全局中断
  UBRR=47;//设定波特率
}
/************************************************/ 
//中断处理子程序 
//int0的中断向量号为2
interrupt[2] void RTKbMsg(void) 
{   
  unsigned int i;
  unsigned char Kb_buffer[20]; 
  DDRB==0x00;//0为输入,接受键盘数据
  for(i=0;i<11;i++)
    {
      Kb_buffer[i]=PINB.1;
      test_cnt++;
      Kb_cnt++;
    }
  if(Kb_cnt>=10)//发送接收到的键盘数据
    {
      i=0;
      UCR.3=1;//允许UART发送
      for(i=0;i<Kb_cnt;i++)
        {
          UDR=Kb_buffer[i];
        } 
      i=0;
      Kb_cnt=0;
    }
}
/****************************************/ 
void RThostMsg(void)//接受和传送主机的命令信息  
{
  unsigned char HostMsg;
  unsigned char *outptr;
  unsigned char *address;
  int msg_size; 
  int Host_cnt=0;
   
  UDR.4=1;
  HostMsg=getchar();
  if(HostMsg)
    {
      DDRB=0x02;//Port B 1脚设为输出 
      *outptr=HostMsg; 
      *address=HostMsg;
      msg_size=strlen(*outptr);
      while(outptr<address+msg_size)
        {
          PORTB.1=(*outptr);
          outptr++;
          Host_cnt++;
        }
      if(outptr>=address+msg_size)
        {
          outptr=address;
          Host_cnt=0;
        } 
    }
}
/*********************************************/
void main(void)

  Init2313();
  while(1)
    { 
      if((PIND.2==1)&&(PINB.1==1))
        {
           GIMSK=0x40;//int0中断请求触发
           MCUCR=0x02;//int0下降沿触发 
        }
      RThostMsg(); 
      delay_us(5); 
    } 
}

//主机侧程序
#include <stdio.h> 
#include <string.h>
#include <delay.h>
#include <90s2313.h>
/*********************************/ 
/*定义全局数据*/ 
unsigned char Host_buffer[20];

/*********************************/ 
void init2313()//初始化2313
{
  UBRR=47;//设定波特率 
  SREG=0x80;//允许全局中断
}
/*********************************/
interrupt[2] void RTHostMsg()//int0中断处理,接受主机命令并且传送
{
  unsigned int host_cnt=0;
  unsigned int i;
  for(i=0;i<11;i++)
    {
      DDRB=0x00;//PINB1引脚输入
      Host_buffer[i]=PORTB.1;
      host_cnt++;
    } 
  if(host_cnt>=11)
    {
      UCR.3=1; //UART发送使能
      i=0;
      for(i=0;i<host_cnt;i++)
        UDR=Host_buffer[i];
    }
  i=0;

/*********************************/  
void RTKbMsg(void)//接收键盘侧信息并传送到主机

  unsigned char *outptr;
  unsigned char *address;
  unsigned char KeyMsg;
  UDR.4=1;//UART接受使能
  KeyMsg=getchar();
  if(KeyMsg)
    {
      *outptr=KeyMsg;
      *address=KeyMsg;
      DDRB=0x02;//PINB1引脚输出
      while(outptr<address+strlen(KeyMsg))
        {
          PORTB.1=*outptr;
          outptr++;
        }
      }
  if(outptr>=address+strlen(KeyMsg))
        outptr=address;

/********************************/
void main()

 init2313();//初始化
 while(1)
 {
   if((PIND.2==0)&&(PINB.1==0))//PIND.2,int0;PINB.1,DATA
     {
       GIMSK=0x40;//int0中断请求触发
       MCUCR=0x02;//int0下降沿触发 
     }
   RTKbMsg();
   delay_us(5);
 }
}




发表时间:2002年9月17日16:50:00

  
回复该帖

本主题共有 4 帖,分页:>>>>>该主题的所有内容[4]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  11125.[详细]下次用汇编!
摘要:......(无内容)
- [dirty][852次] 2002年9月17日

  11126.[详细]汇编?为什么呢?我对汇编不怎么熟悉阿
摘要:......(无内容)
- [woodvase][1007次] 2002年9月17日

  11144.[详细]先把汇编弄熟再用C
摘要:......(无内容)
- [dirty][903次] 2002年9月18日

[上一篇帖子]:初学者:我很着急,希望高手能帮我一下,我可以打电话向您请教!
[下一篇帖子]:老古及各位高手,拜托你们给解答一下!先谢过了。