有这么一段单片机C语言程序:
/* T2中断服务函数,LED动态扫描、蜂鸣器控制 */
void InterruptTimer2() interrupt 5
{
static uint8 i = 0; //LED位选索引
TF2 = 0; //清零T2中断标志
//全部LED动态扫描显示
if (ENLED == 0) //LED使能时才进行动态扫描
{
P0 = 0xFF; //关闭所有段选位,显示消隐
P1 = (P1 & 0xF0) | i; //位选索引值赋值到P1口低4位
P0 = *((uint8 data*)&ledBuff+i); //缓冲区中索引位置的数据送到P0口
if (i < (sizeof(ledBuff)-1)) //索引递增循环,遍历整个缓冲区
i++;
else
i = 0;
}
//由蜂鸣器状态位控制蜂鸣器
if (staBuzzer == 1)
BUZZER = ~BUZZER; //蜂鸣器鸣叫
else
BUZZER = 1; //蜂鸣器静音
}
看到里面的 P0 = *((uint8 data*)&ledBuff+i); 这句不是很懂,,,,哪位大侠帮忙分析下啊?
uint8 data* 和 uint8 *data有什么区别啊?
追答我不是很了解单片机编程,我猜uint8 data是一种数据类型,
uint8 data*是指向这种数据类型的指针。
uint8 *data我不知道是什么。程序里有这样的写法吗?
程序中有这样的数据类型定义: typedef unsigned char uint8;
如果要看完整的程序加Q:289441397
哦?那么我的回答好像不正确。
程序中,data是怎么定义的?
我刚查了:
data:是指将要定义的变量,是用存储在单片机最内部的128字节RAM;
idata:是指将要定义的变量,存储在单片机内部的256字节RAM,idata包含data;
xdata:是指将要定义的变量,存储在单片机外部的RAM空间。
虽然你的答案不是很满意,但为你诚恳的态度赞一个,最佳答案就你了!
我刚查了:
data:是指将要定义的变量,是用存储在单片机最内部的128字节RAM;
idata:是指将要定义的变量,存储在单片机内部的256字节RAM,idata包含data;
xdata:是指将要定义的变量,存储在单片机外部的RAM空间。
虽然你的答案不是很满意,但为你诚恳的态度赞一个,最佳答案就你了!
明白了,这里的data相当于一个修饰符,它用来说明所定义的变量存放的位置。
所以,uint8 data*就是一个指针,类型是uint8,指针的存放位置是单片机最内部的128字节RAM
。我之前的回答,仍然是对的,这里做一下补充。
uint8 data* 和 uint8 *data有什么区别啊?