📄 led_4.c
字号:
#include <iom64.h>
#include <intrinsics.h>
//定义延时程序
#define F_CPU 1 //1MHz时钟
#define delay_us(t_nus) __delay_cycles(t_nus*F_CPU)
#define delay_ms(t_nms) __delay_cycles(t_nms*F_CPU*1000)
unsigned char dis_code[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90}; //共阳数码管,段代码1~9 PE口
unsigned char dis_bite[]={0x10,0x20,0x40,0x80}; //位控制 PA4~7
/**********************************************************/
/*键盘扫描函数,读取当前键盘的状态 */
/*有按键按下返回相应按键值,无按键按下返回"0x00" */
/*按键列表: */
/* PB0 PB1 PB2 PB3 */
/* PB4 1 2 3 4 */
/* PB5 5 6 7 8 */
/* PB6 9 A B C */
/* PB7 D E F H */
/**********************************************************/
/*unsigned char key_read(void)
{
unsigned char i;
DDRD = 0x00; //获取行地址,读回0作为地址指示
PORTD = 0x0F;
DDRD = 0xF0;
i = PIND;
DDRD = 0x00; //获取列地址
PORTD = 0xF0;
DDRD = 0x0F;
i |= PIND;
DDRD = 0x00; //输出复位
PORTD = 0xFF;
switch (i) //将按键码转换成键值
{
case 0x00: return 0x00;
case 0xEE: return 1;
case 0xED: return 2;
case 0xEB: return 3;
case 0xE7: return 4;
case 0xDE: return 5;
case 0xDD: return 6;
case 0xDB: return 7;
case 0xD7: return 8;
default : return 0x00;
}
}*/
/********************************************************/
/*按键获取函数,获取按键信号,包含有状态记录及按键去颤抖. */
/*有正确按键按下返回相应按键值,无正确按键按下返回"0x00" */
/********************************************************/
/*unsigned char get_key(void)
{
unsigned char i;
static unsigned char j; //按键记录
i = key_read();
if (i == 0x00) //无有效按键按下
{
j = 0x00; //清除按键记录
return 0x00; //程序退出
}
if(j == 0x00) //为新按键
{
j = i; //保存本次采样结果
delay_ms(10); //去按键颤抖
i = key_read();
if(i == j)
{
return i;
}
}
return 0x00;
}*/
void main(void)
{
//端口初始化
SFIOR &= 0xFB;
PORTA = 0xFF;
PORTC = 0xFF;
PORTD = 0xFF;
PORTE = 0xFF;
PORTF = 0xFF;
PORTG = 0xFF;
while(1)
{
unsigned char a;
//a = get_key();
a=0;
DDRE = 0xFF;
DDRA |= 0x10;
PORTE = dis_code[a];
PORTA |= 0x10;
delay_ms(10);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -