导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→那位大虾指点一下小弟.拜托了!

* 34780: 那位大虾指点一下小弟.拜托了!

   imickey 
imickey发表的帖子 

 那位大虾指点一下小弟.拜托了!
在马忠梅的单片机的c语言应用程序设计一书的170页的8253应用的程序:
#include   <absacc.h>  
#include   <reg51.h>  
#define uchar unsigned char 
#define uint unsigned int
#define COM8253 XBYTE[0x8003]
#define C1 XBYTE[0x8000]
#define C2 XBYTE[0x8001]
#define C3 XBYTE[0x8002]
#define SNUM 1
sbit P1_7 =P1^7;  /*门控信号*/
uint idata BUF8253[3];
   ...........
void cbfp(po,x)  /*计数器取值函数参数为地址和通道*/
uchar xdata *po;
uchar x;
{
   uchar h,l;
   l=*po;
   po++;      /*问题1*/
   po--;
   h=*po;
   BUF8253[x]=-(h*256+l);  /*问题2*/
}
void fcbf(void)
{
  P1_7 =0;
  COM8253 =0x0a;
  COM8253 =0x4a;
  COM8253 =0x8a;
  COM8253 =0x0a;    /*问题3*/
  cbfp(&C1,0);
  COM8253 =0x0a;
  cbfp(&C2,1);
  COM8253 =0x0a;
  cbfp (&C3,2);
}
void init 8253(void)
{
  COM8253=0x3a;   /*问题4*/
  C1=0;C1=0;
  COM8253=0x7a;
  C2=0;C2=0;
  COM8253=0xba;
  C3=0;C3=0;
}
void main()
{
   init 8253();
   .....
   fcbf();
}
其中有不是很清楚地地方向各位大虾请教了:
问题1:po++之后为什么要po--?这样不是没有操作吗?
问题2:BUF8253[x]=-(h*256+l)为什么这样写,用0xffff-(h*256+l)可不可以?
问题3:在取值时为什么要把一个语句写两遍,COM8253=0X0a;COM8253=0X0a;cbfp(&C1,0),是
不是重复了?
问题4:C1=0;C1=0;写两次是不是先赋计数器初值低位在赋高位的意思?



发表时间:2003年6月18日9:19:06

  
回复该帖

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

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

[上一篇帖子]:MAX706T是什么芯片?具体的功能是什么?多谢![em05]
[下一篇帖子]:我知道,可是我的意思是。。。我的意思是说:就算你计算出电路的最大可能电流, 可这并不是LED