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

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

  
楼 主:imickey 2003年6月18日09:19
 那位大虾指点一下小弟.拜托了!
在马忠梅的单片机的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;写两次是不是先赋计数器初值低位在赋高位的意思?


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:MAX706T是什么芯片?具体的功能是什么?多谢!

[下一篇主题]:提供全新8019as网卡芯片,价格优惠