在线时间0 小时
UID276434
注册时间2011-4-6
NXP金币0
该用户从未签到
新手上路

- 积分
- 45
- 最后登录
- 1970-1-1
|
买的MC9S08DZ60开发板上SCI模块自带了个程序,有部分用到了指针,感觉自己没理解,希望C语言方面的高手指点一下。
#define SCIC1 0x02
#define SCIC2 0x03
unsigned volatile char *sci_periph[2] = {
&SCI1BDH,
&SCI2BDH
};//定义了一包含两个元素的指针数组
/////////////////////////////////////////////////////////////////////////////////////////
// 打开串口通信
/////////////////////////////////////////////////////////////////////////////////////////
void SCIOpenCommunication(unsigned char sci_num)
{
unsigned volatile char *sci_pt;
sci_pt = sci_periph[sci_num];
if (!sci_status[sci_num])
{
// 打开串口通信模块
sci_status[sci_num] = TRUE;
// 设置波特率
if (sci_num)
SCI2BD = BR;
else
SCI1BD = BR;
//8位数据位 1位停止位 无校检位
sci_pt[SCIC1] = 0x00;
// 发送器与接收器允许
sci_pt[SCIC2] = 0x0C;
// 定时器益出 1ms
TPM1MODH = 0x0F;
TPM1MODL = 0xA0;
// Enable Interrupt Overflow Timer1 and
// select bus clock as clock source. Prescaler Divisor = 1
TPM1SC = 0x48;
}
}
中间无关的可略去,偶只想明白sci_pt[SCIC1] = 0x00;
这句是神马意思?sci_pt是个指针,存放的是SCI1BDH或SCI2BDH寄存器的地址,sci_pt[0x02]是什么? 一个头两个大,哎
|
|