📄 h32.c
字号:
// 用8255控制八段数码管
// 1. 启动伟福软件界面,连接好实验仪
// 2. 8255的CS接CS0,
// 3. 8255的PORTA口的PA0~PA7接段码A~H,
// 4. 8255的PORTC口的PC0~PC5接位码G0~G5
// 5. 若程序运行正常,会在八段管上显示 "123456"
#define mode 0x82 // 方式0,PA,PC输出,PB输入
xdata unsigned char PortA _at_ 0x8000 ; // Port A
xdata unsigned char PortB _at_ 0x8001 ; // Port B
xdata unsigned char PortC _at_ 0x8002 ; // Port C
xdata unsigned char CAddr _at_ 0x8003 ; // 控制字地址
code unsigned char LEDMAP[] = { // 八段管显示码
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71
};
void delay(unsigned char CNT)
{
unsigned int i;
while (CNT-- !=0)
for (i=200; i !=0; i--);
}
void main()
{
register unsigned char dd;
CAddr = mode; // 方式0, PA,PC输出, PB输入
while(1){
dd = 0x01; // 先显示最低位
PortA = LEDMAP[6]; // 段码输出到PA
PortC = dd; // 位码输出到PC
delay(1); // 延时
PortC = 0; // 关闭显示
dd <<= 1; // 显示下一位
PortA = LEDMAP[5]; // 段码输出到PA
PortC = dd; // 位码输出到PC
delay(1);
PortC = 0;
dd <<= 1;
PortA = LEDMAP[4]; // 段码输出到PA
PortC = dd; // 位码输出到PC
delay(1); // 延时
PortC = 0;
dd <<= 1;
PortA = LEDMAP[3]; // 段码输出到PA
PortC = dd; // 位码输出到PC
delay(1); // 延时
PortC = 0;
dd <<= 1;
PortA = LEDMAP[2]; // 段码输出到PA
PortC = dd; // 位码输出到PC
delay(1); // 延时
PortC = 0;
dd <<= 1;
PortA = LEDMAP[1]; // 段码输出到PA
PortC = dd; // 位码输出到PC
delay(1); // 延时
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -