打印

单片机C求教

[复制链接]
1434|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
a200556220407|  楼主 | 2009-8-20 21:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面这个程序我有几点看不懂,
#include<reg51.h>
#define unchar unsigned char
unchar xdata r_buf[32];
unchar xdata t_buf[];
unchar r_in,r_out,t_in,t_out;
bit r_full,t_empty,t_done;
unchar  code  m[]={"this is a program\r\n"};
serial() interrupt 4 using 1/*中断服务程序用于向接收缓冲区写数据,或者向外发送数据*/
{
  if(RI&&~r_full)
  {
    r_buf[r_in]=SBUF;
RI=0;
r_in=++r_in&0x1f;
if(r_in==r_out)/*为什么二者相等时接收缓冲区满?*/
  r_full=1;
   }
   else if(TI&&~t_empty)
   {
     SBUF=t_buf[t_out];
TI=0;
t_out=++t_out&0x1f;
if(t_out==t_in)/*为什么二者相等时接收缓冲区为空?*/
   t_empty=1;
}
else if(TI)
{
  TI=0;
  t_done=1;
}
}
void loadmsg(unchar code *msg)
     {
   while((*msg!=0)&&((((t_in+1)^t_out)&0x1f)!=0))/*不知道什么意思*/
   {
     t_buf[t_in]=*msg;
msg++;
t_in=++t_in&0x1f;
if(t_done)
{  
   TI=0;
   t_done=1;
}
}
  }
void process(unchar ch)
     {
   /*对接收缓冲区的处理*/
   return;
}
void processmsg(void)
     {
   while(((r_out+1)^r_in)!=0)
   {
     process(r_buf[r_out]);
r_out=++r_out&0x1f;
}
  }
main()
{
  TMOD=0x20;
  TH1=0xfd;
  TL1=0xfd;
  TCON=0x40;
  SCON=0x50;
  IE=0x90;
  t_empty=t_done=1;
  r_full=0;
  r_out=t_out=t_in=0;
  r_in=1;/*为什么不是r_in=0*/
  for(;;)
  {
     loadmsg(&m);/*觉得应该是loadmsg(m)*/
processmsg();
  }
}
哪位大侠能给我详细的讲解下吗,不胜感激。

相关帖子

沙发
aozima| | 2009-8-20 22:20 | 只看该作者
本帖最后由 aozima 于 2009-8-20 22:26 编辑

1.这程序不是楼主写的
2.楼主基本上只有两样不懂
3.从现在的情况看,51并不是最简单易学的单片机(个人看法)

建议:
真想学  就从点灯开始  不要抄别人的程序  看看就行了  自己从0开始
从现在的情况看,楼主要学不一定非得选择51
ARM7的  及STM32这些学起来都比51容易

至于到最后,用什么,想必到那时  楼主自己心里明了....

使用特权

评论回复
板凳
cauhorse| | 2009-8-21 13:23 | 只看该作者
两样不懂?
莫非是传说中的“这也不懂,那也不懂”。。?

使用特权

评论回复
地板
gaohq| | 2009-8-21 16:06 | 只看该作者
哈哈。
学理发就碰到个络腮胡
楼主学单片机就找了个很差劲的例程(初学的人不好懂)。

使用特权

评论回复
5
bin362422| | 2009-8-21 17:33 | 只看该作者
其实别人的程序是可以看看的,仅仅是看看而已!别把别人的程序拷贝过来,自己只仿真一下,就以为自己会了。我见过一个,自己还挺有理由:捷径。说真的,学习上我不怎么认为有捷径的。只是个人看法,呵呵

使用特权

评论回复
6
bin362422| | 2009-8-21 17:37 | 只看该作者
其实初学者只要不抱侥幸心理,我认为学什么都不是很难的。我也是初学者啊,而且很初。呵呵,望大家多多指教!

使用特权

评论回复
7
a200556220407|  楼主 | 2009-8-21 20:21 | 只看该作者
呵呵,多谢各位大侠指点,我是新学的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

87

帖子

0

粉丝