搜索
bottom↓
回复: 18

holtek单片机,大侠们帮我看看。(请给了帮助的坛友,看到后留下邮购部id,我会尽快将订单转

[复制链接]

出0入0汤圆

发表于 2010-6-27 09:02:56 | 显示全部楼层 |阅读模式
刚学单片机很多看不懂,请教给位。

CONFIG.H头文件,大侠们帮我看看,括号内容是我疑惑的。
#ifndef _CONFIG_H_  (这里定义config_H,是什么意思,这样写有些看不懂)
#define _CONFIG_H_

#ifndef TRUE                (还有这里的TRUE和FALSE怎么大写和小写怎么都分开来设定,这样写实什么意思)
#define TRUE  1
#endif

#ifndef FALSE
#define FALSE 0
#endif

#ifndef true
#define true  1
#endif

#ifndef false
#define false 0
#endif

typedef unsigned char  uint8;                                   /* 定义可移植的无符号8位整数关键字            */
typedef signed   char  int8;                                    /* 定义可移植的有符号8位整数关键字            */

typedef unsigned long   uint16;                                  /* 定义可移植的无符号16位整数关键字           */
typedef signed   long   int16;                                   /* 定义可移植的有符号16位整数关键字           */

typedef unsigned long int uint32;                                  /* 定义可移植的无符号32位整数关键字           */
typedef signed   long int int32;                                   /* 定义可移植的有符号32位整数关键字   */

/********************************/
/*     "以下为程序配置"           */
/********************************/



#define _1MS                                0          (这里好像是定义时间吧。这样定义看不懂,没有一点规律,而其定义的_1ms这些
#define _5MS                                1                      后面的主程序中根本就没有看到,有什么用途呢)
#define _10MS                        2
#define _100MS                        20
#define _500MS                        112
#define _1000MS                        225


#endif

另外我也将main文件的定义部分贴出来。

#include "HT46R064.h"
#include "config.h"

//#pragma vector isr_4 @ 0x4
#pragma vector isr_8 @ 0x8
//#pragma vector isr_c @ 0xc

#define StaWait 0
#define StaIn   1
#define StaOut  2
#define StaInOut 3

#define NoKey   0
#define KeyS   1
#define KeyL   2

#define OutOn  _pa4
#define InOn   _pa3
#define KeyPin _pa5

#define VON   0x7FF
#define SLEEP_TIME 10


unsigned long ADV[3];

uint8 LedCnt ,PBK,pbk,PBKs,NoBatCnt,BatChkCnt;
uint8 Key;
uint8 KeyLongCnt;

uint8 TimeCnt1;
uint8 TimeCnt2;

uint8 TimeCnt1S;
uint8 ShtDly;
uint8 time_dly;       
uint8 Ms10Cnt;
uint8 ShtChkCnt;
uint8 BatLevCnt;
uint8 PBKL;
uint8 PBKsL;

//bit    DAbit;
bit    BatteryCapacityShow;   (holtek单片机可以使用 bit语句,但是这些定义都指向哪里呢)
bit    OutOnBit;

bit    ModeInBit;
bit    ModeOutBit;
bit    ModeWaitBit;

bit    Bit1S,Bit2S,Bit3S;
bit    PWMbit;
bit    BitSht; //short set 1
bit    BitFalsh;
bit    KeyOffBit;
bit    KeyShotBit;

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2010-6-27 10:08:19 | 显示全部楼层
怎么没有人呢指定一二呢

出0入0汤圆

发表于 2010-6-27 11:53:47 | 显示全部楼层
1、#ifndef _CONFIG_H_  (这里定义config_H,是什么意思,这样写有些看不懂)
#define _CONFIG_H_
   
   如果没有定义CONFIG.H文件,那么定义CONFIG.H文件
              
2、#ifndef TRUE                (还有这里的TRUE和FALSE怎么大写和小写怎么都分开来设定,这样写实什么意思)
#define TRUE  1
#endif

大写TRUE和小写true都表示1,用两次来预定义。同样的道理大写和小写的false都表示0。

3、#define _1MS 0          (这里好像是定义时间吧。这样定义看不懂,没有一点规律,而其定义的_1ms这些
#define _5MS 1                      后面的主程序中根本就没有看到,有什么用途呢)

  这个是为延时函数定义的参数,理解这个依赖于具体的延时函数,可以参考延时函数的定义

出0入0汤圆

 楼主| 发表于 2010-6-27 12:05:16 | 显示全部楼层
谢谢,再帮我看看主程序内的定义吧。告诉我邮购部的id,我留言转你id。

出0入0汤圆

发表于 2010-6-27 12:08:50 | 显示全部楼层
邮购部MM会忙死的
armok要收交易费用了,哈哈

出0入0汤圆

 楼主| 发表于 2010-6-27 12:24:07 | 显示全部楼层
呵呵!只能这样啦,问题比较菜,公司之前的程序看不懂,现在又要改。很少接触单片机了,看不懂了。哪位或者给点资料,之前的程序很多定义看的不是很明白。
公司产品上的东西,完整的源代码不能贴出来了。

出0入0汤圆

发表于 2010-6-27 12:42:22 | 显示全部楼层
回复【楼主位】morine1
-----------------------------------------------------------------------
指向内存某个地址,用了该字节中的8个位存入,仿真一下就显示出来



(原文件名:ht.JPG)

出0入0汤圆

 楼主| 发表于 2010-6-27 13:41:18 | 显示全部楼层
谢谢各位的热心,特别是118139.松下电机给需要的人,留id。先来先得。

出0入134汤圆

发表于 2010-6-27 13:59:53 | 显示全部楼层
#ifndef _CONFIG_H_  (这里定义config_H,是什么意思,这样写有些看不懂)
#define _CONFIG_H_



意思就是  如果没有定义过 _CONFIG_H_ ,那就定义一个。
#ifndef ..程序段..  #endif   是一个预编译指令。   if not define 就是  如果没有定义,那么执行下面的程序段;否则不执行。
一般用来防止重复包含。
例如某个C文件包含这个头文件,那么由于_CONFIG_H_没有定义过,所以里面的程序段将被执行。当再次包含该头文件时,由于_CONFIG_H_已经被定义过了,下面的程序段就不会再次执行了

出0入0汤圆

 楼主| 发表于 2010-6-27 17:55:50 | 显示全部楼层
请楼上几位,留下邮购部id,虽然自己还是完全理解含义。但是我说过我就一定会做到,而且自己应该是能力有限,给其他的坛友去发挥作用吧。只有一只,所以先到先得,请不要介意,帮助有大小,我就不论了。

出0入0汤圆

发表于 2010-6-27 18:03:25 | 显示全部楼层
呵呵,路过

出0入0汤圆

 楼主| 发表于 2010-6-28 18:50:21 | 显示全部楼层
怎么没人来领奖啊,呵呵!
反正话已经说出去了,我就不收回了。东西给真正需要的朋友。
留下邮购部id。如果邮购部没有id,你可以留下你的详细地址和联系方式,我就将发货地址更新一下。邮费不能到付,就我包了。

出0入0汤圆

发表于 2010-6-28 20:10:03 | 显示全部楼层
虽然我没有出过力,虽然我很方便留下地址,虽然我也愿意得到电机,但是我是一个路过的……

出0入0汤圆

发表于 2010-6-28 20:11:49 | 显示全部楼层
#define _1MS 0 -----------------------------肯定有个函数对应的  0是这个函数的参数

出0入0汤圆

 楼主| 发表于 2010-6-30 11:22:27 | 显示全部楼层
我转给你吧。你留下id,如果不能用预付款付这个电机,那你要等这次淘宝结束,我一次付款完了。

出0入0汤圆

发表于 2010-7-2 19:48:55 | 显示全部楼层
前面的有朋友已经解释了,就不说了,
>--------------------------------------------------------
#define _1MS 0          (这里好像是定义时间吧。这样定义看不懂,没有一点规律,而其定义的_1ms这些
#define _5MS 1                      后面的主程序中根本就没有看到,有什么用途呢)
#define _10MS 2
#define _100MS 20
#define _500MS 112
#define _1000MS 225
<--------------- 以上只是一个通用的延时(定时)数值定义,方便调试的时候更换值,至于_1MS何用,未看到整个程序不好作解释,估计这个是程序的某部分功能的定时值,有一个硬件定时器为5ms计时,溢出后程序内部计时器+1,再比较设定的数值(如_10MS为2),大于等于设定值,即运行某部分功能,_1MS这样定义可能是主程序的循环时间为固定1MS,相当于每隔1MS就会运行一次该程序。

>--------------------------------------------------
//bit    DAbit;
bit    BatteryCapacityShow;   (holtek单片机可以使用 bit语句,但是这些定义都指向哪里呢)
<--------------- 编译器会自动为bit定义的标号分配RAM空间,一般为按顺序8个为1byte,程序中一般无需理会这些bit定义指向哪里

出0入0汤圆

发表于 2010-7-7 06:39:20 | 显示全部楼层
初学单片机觉得S T C最合适,holtek还是有点麻烦啊,特别是一些高手(用很多技巧)编的东西很难看懂。

出0入0汤圆

发表于 2010-7-7 16:32:37 | 显示全部楼层
#ifndef _CONFIG_H_  (这里定义config_H,是什么意思,这样写有些看不懂)
#define _CONFIG_H_

#ifndef TRUE                (还有这里的TRUE和FALSE怎么大写和小写怎么都分开来设定,这样写实什么意思)
#define TRUE  1
#endif

#ifndef FALSE
#define FALSE 0
#endif

#ifndef true
#define true  1
#endif

#ifndef false
#define false 0
#endif
这些部分的前面的#ifndef ...  #define ... #endif都是防止重定义的.
就是在其他地方如果也定义了这个就会重复定义.或者别的地方已经定义过了,那么在这里就不再重新定义了.


#ifndef这个跟if差不多,找跟#endif成对的,并且最近的组合.



至于后面定义时间那个,不知道跟我们的程序里的是不是一样.
我们写的时候都把任务分成等级的.10ms任务,100ms任务等等的.
做的时候就在定时器定个2.5ms,然后定义一个变量,没四次进一个10ms任务.不知道他这个定义时间是不是跟我们那个有些类似.


至于最后一个问题,我没用过这个单片机.
但是你可以看看,那些变量时用来干什么的.如果特殊寄存器的话,你就得看看芯片手册了.
如果仅仅是个变量的话,那么他们肯定存储在RAM里了,具体什么位置我想没有什么太大的意义
除非你想要弄汇编.

出0入0汤圆

发表于 2013-10-14 21:42:31 | 显示全部楼层
路过,认真看了一下,讲解得很好,希望能多说说。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-15 11:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表