📄 m16-lwdzz.txt
字号:
#include <mega16.h>
flash unsigned char led_7[10]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};//定义字符表
flash unsigned char position[6]={0XDF,0XEF,0XF7,0XFB,0XFD,0XFE};
unsigned char time[3];//显示时,分,秒
unsigned char dis_buff[6]; // 显示缓冲区
int time_counter=0;// 中断次数计数单元
unsigned char posit;
bit point_on, time_1s_ok;
void time_to_disbuffer(void)//时间送显示缓冲区函数
{ unsigned char i,j=0;
for (i=0;i<=2;i++)
{
dis_buff[j++] = time[i] % 10;
dis_buff[j++] = time[i] / 10;
}
}
void display(void)//数码管显示程序
{ PORTB = 0xff;
PORTD = led_7[dis_buff[posit]];
if (point_on && (posit==2||posit==4)) PORTA |= 0x80;
PORTB= position[posit];
if (++posit >=6 ) posit = 0;
}
void delay(unsigned int a) //延时程序用于
{
while(a--)
{
display();
}
}
void delay1(void)//闹玲延续时间
{ int i,j;
for(i=0;i<5000;i++)
for(j=0;j<5000;j++);
}
void fengmingqi_bell(void)//蜂鸣器报警
{
PORTC|=0X80;
delay1();
PORTC&=~0X80;
}
void key_in(void)//按键扫描程序 用于调整时间
{
if((PINC&(1<<5))==0)//按键是否按下,
{
delay(7000);//延时消抖
if((PINC&(1<<5))==0)//确认按键按下
{ time[1]++;
if(time[1]==60)
{time[1]=0;}
time_to_disbuffer();
}
}
if((PINC&(1<<6))==0)//按键是否按下
{
delay(7000);//延时消抖
if((PINC&(1<<6))==0)//确认按键按下
{ time[2]++;
if(time[2]==24)
{time[2]=0;}
time_to_disbuffer();
}
}
}
// Timer 0 比较匹配中断服务
interrupt [TIM0_COMP] void timer0_comp_isr(void)
{ key_in();
display();
if (++time_counter>=500)
{
time_counter = 0;
time_1s_ok = 1;
}
}
void main(void)
{
PORTD=0x00; // 显示控制I/O端口初始化
DDRD=0xFF;
PORTB=0X3F;
DDRB=0xFF;
PORTC=0X70;
DDRC=0X8F;
// T/C0 初始化
TCCR0=0x0B; // 内部时钟,64分频(4M/64=62.5KHz),CTC模式
TCNT0=0x00;
OCR0=0x7C; // OCR0 = 0x7C(124),(124+1)/62.5=2ms
TIMSK=0x02; // 允许T/C0比较匹配中断
time[2] = 12; time[1] = 00,time[0]=00; // 设时间初?
posit = 0;
time_to_disbuffer();
#asm("sei"); //允许全局中断
while (1)
{
if (time_1s_ok==1) // 1秒到
{
time_1s_ok = 0;
point_on = ~point_on;
if (++time[0] >= 60) // 以下时间调整
{
time[0] = 0;
if (++time[1] >= 60)
{
time[1] = 0;
if(++time[2]>=24)
{time[2]=0;}
}
}
if(time[2]==14&&time[1]==0&time[0]==0)//设定闹玲时间
{ fengmingqi_bell();}
time_to_disbuffer(); // 新调整好的时间送显示缓冲区
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -