标题:
关于结构体问题的求解
[打印本页]
作者:
宏达工控
时间:
2025-8-6 12:14
标题:
关于结构体问题的求解
union BUTE
{
unsigned char BYTE;
struct
{
unsigned char p54:1;
unsigned char p55:1; //变量名p54、p55、p32等通常对应单
unsigned char p32:1;
unsigned char p33:1;
unsigned char p34:1;
unsigned char p35:1; //bit5
unsigned char p36:1;
unsigned char p37:1; //bit7
} BIT;
} zhdat;
void showNumber(unsigned char n)
{
if(n > 9) return; // 仅处理0~9
zhdat.BYTE = digitCode[n]; // 整体赋值段码,控制所有段
}
********
zhdat.BYTE = digitCode[n]; 这里KELL调试zhdat.BYTE=0X6d bit=unino{ P54=0X01 P55=0X00 P32=0X0133=01 34=00 35=01 36=01 37=00}可是反应到端口没有变化
作者:
xiaobendan001
时间:
2025-8-6 13:56
你的意思是把BYTE的内容直接映射到引脚上?感觉这样操作能行?
作者:
宏达工控
时间:
2025-8-7 09:38
问题以解决,结帖:解决办法 // 将位域值写入实际端口寄存器
P5 = (P5 & ~0x30) | ((zhdat.BIT.p55 << 5) | (zhdat.BIT.p54 << 4)); // 操作P5.4和P5.5
P3 = (P3 & ~0xFC) | ((zhdat.BIT.p37 << 7) | (zhdat.BIT.p36 << 6) |
(zhdat.BIT.p35 << 5) | (zhdat.BIT.p34 << 4) |
(zhdat.BIT.p33 << 3) | (zhdat.BIT.p32 << 2)); // 操作P3.2-P3.7
作者:
天ノ忆
时间:
2025-8-12 10:49
不用这么麻烦,你把结构体映射到对应的地址就可以了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1