#include <hidef.h>
#include <MC68HC908GP32.h>
/* 在codewarrior中建立了C语言的程序之后程序自动引入头文件MC68HC908GP32.h在这个头文件中定义了
typedef unsigned char byte;
typedef unsigned int word;
typedef unsigned long dword;
typedef unsigned long dlong[2];
如果足够用,建议使用byte而不是int,因为它只占用一个字节,在单片机中内存是稀缺资源,非常宝贵*/
byte a @ 0x0050; // 定义unsigned char放在50单元,这种定义方式只能用于
// 全局变量。
byte *p @ 0x0051; // 定义一个指针放在0x0051单元,指向一个unsigned char,
// 究竟指向什么地址还没有定义。注意!这里非常重要的是,
// 虽然byte(unsigned char)只有一个字节,但是这个指针却
// 是两个字节的,也就是说在0x0051和0x0052分别存放了这
// 个指针的高、低字节。
byte b @ 0x0060; // 定义一个变量放在60单元
#define c (*(volatile byte*)0x0058) // 另一种为变量指定地址的方式:宏定义
// 不要为这种复杂的写法感到困惑或者烦躁,
// 它也可以分解成几个很简单的部分来看:
// (volatile byte*)是C语言中的牵制类型转换
// 它的作用是把0x0058这个纯粹的十六进制数
// 转换成为一个地址,其中volatile并不是必要
// 的,它只是告诉编译器,这个值与外环境有关,
// 不要对它优化。这里也没有必要对编译器的具
// 体机制讨论太多[1]。接下来在外面又加了一
// 个*号,就表示取0x0058内存单元中的内容了。
// 经过这个宏定义之后,c就被可以做为一个普通
// 的变量来操作,所有出现c的地方编译的时候
//