导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→菜鸟请问各路高手???急!!!!!!自学难[aohaijun]

 *第48876篇: 菜鸟请问各路高手???急!!!!!!自学难

  
楼 主:aohaijun 2007年5月17日22:28
 菜鸟请问各路高手???急!!!!!!自学难
本人刚学C51,软件编译用的是Keil,作为菜鸟一族,有几个难以解决的问题,希望各位高手能帮小弟一把,本人将不甚感激!!!!

1)定义头文件*.h时.
    如:定义LCD1602.h,如下:
        #ifndef __LCD1602_H__
        #define __LCD1602_H__
        ......
        ......
        #endif
    其中第二句话( #define __LCD1602_H__)是什么意思?为什么要这样定义?????打开C教材上面说关于define的语法都是:#define XXXX XXXX.
    

2)关于C51定时.
    本人比较倾向C语言,但在程序中较为常见的定时之一是用C语言循环语句来编的,如:
        
        void delayXms(unsigned int x)     //延迟X毫秒函数
        {
        unsigned int i,j;
        for(i=0;i  <x;i++)
         for(j=0;j  <130;j++)
            ;
        }
         为什么用x*130就可以得到延时x毫秒???
         
    又如:void delay_1us(void)      //延时1us函数
         {
         unsigned char i;
         for(i=0;i  <1;i++)
             ;
         }
        又为什么这样可以得到延时1us????利用C循环来定时是怎么计算的?C语句执行也和汇编一样需要时间的吗????

  
2楼:qinwei16 2007年5月17日23:16
 [原创]
1: #ifdefine和#ifndefine是使程序进行条件编译, #if 语句测试一个常量表达式是否产生非零结果,#ifdef 语句测试某个标识是否此前曾定义过(并且没有被随后的 #undef 语句取消过),可以通过 #define 语句定义一个标识或者传送-Didentifier 参数给编译器。

  
3楼:qinwei16 2007年5月17日23:20
 [原创]
2:用C语言实现精确延时是不可能.上面程序的延时主要关注你的指令周期和机器周期的关系.比如51单片机的指令周期为机器周期的12倍,也就是说如果你的晶振为12MHz,那么指令周期就是1us.通过计算每条指令执行的周期,就可以实现延时.

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

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


[上一篇主题]:LPC2103开发板demo程序ads1.2环境

[下一篇主题]:AT91SAM7X256开发板只售450元