硬件:ATMeag128 频率8M 要求:1、数码管的显示范围为“00”-“59”;显示内容初始为“00”; 2、显示内容1s增加1,增到59后回00。 3、要求应用定时计数器1,CTC模式,采用中断程序实现。(设系统时钟为内部8MHz时钟信号)软件:iccavr
时间: 2024-05-31 15:07:24 浏览: 6
实现代码如下:
#include <avr/io.h>
#include <avr/interrupt.h>
// 定义数码管显示的值
const uint8_t num[10] = {
0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00000111, // 7
0b01111111, // 8
0b01101111, // 9
};
volatile uint8_t sec = 0; // 秒数
int main(void)
{
// 设置定时器1为CTC模式,计数到31250时产生中断
TCCR1A = 0; // 使用普通模式
TCCR1B = (1 << WGM12) | (1 << CS12); // CTC模式,256分频
OCR1A = 31250; // 计数到31250时产生中断
TIMSK1 = (1 << OCIE1A); // 开启定时器1中断
// 设置数码管的引脚为输出模式
DDRC = 0xff;
// 开启全局中断
sei();
while (1)
{
// 在主循环中不做任何事情
}
}
ISR(TIMER1_COMPA_vect)
{
sec++; // 秒数加1
if (sec >= 60)
{
sec = 0; // 秒数归零
}
// 将秒数转化为两位数的BCD码
uint8_t bcd = (sec / 10) << 4 | (sec % 10);
// 在数码管上显示BCD码
PORTC = num[bcd >> 4]; // 显示十位数
_delay_ms(5); // 稍微延时一下,避免闪烁
PORTC = num[bcd & 0x0f]; // 显示个位数
}
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)