完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include #define F_CPU 1000000 // 单片机主频为7.3728MHz,用于延时子程序和计算定时器初始值 #include til/delay.h> #include #include #include //**********************变量区********************* #define uchar unsigned char #define uint unsigned int #define dird DDRD #define datd PORTD #define dira DDRA #define data PORTA #define dle0 PORTD &= ~(1 << PD4) //数码管段控制位为0 #define dle1 PORTD |= (1 << PD4) //数码管段控制位为1 #define wle0 PORTD &= ~(1 << PD5) //数码管位控制位为0 #define wle1 PORTD |= (1 << PD5) //数码管位控制位为1 uchar ledd[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar ledw[]={0xfe,0xfd,0xfb,0xf7}; uchar dis_buff[4]={0,0,0,0},posit,k; //**********************函数区**************************** void adc_to_di***uff(uint abc) //数据放入显示缓存 { uchar i; for(i=0;i<4;i++) { dis_buff[i]=abc%10; abc/=10; } } void display(void) //动态显示 { for(posit=0;posit<4;posit++) { wle1; data=0xff; wle0; dle1; data=ledd[dis_buff[posit]]; dle0; data=0xff; wle1; data=ledw[posit]; wle0; } } ISR(SIG_OUTPUT_COMPARE0) //定时器1比较中断 { k=1; } void main(void) { uint j; dira=0xef; data=0xef; dird=0x3f; datd=0xff; TCCR0=0X0A; //定义定时器0工作方式 OCR0=249; TIMSK=0X02; SREG|=0X80; while(1) { if(k) { display(); k=0; } } } |
|
相关推荐
4 个讨论
|
|
|
|
|
|
|
|
当定时器中断一次后,就关掉定时器,你看看k值是多少
|
|
|
|
|
|
关掉中断 k也不会变
|
|
|
|
|
|
解决了 是优化掉了 稍微改下 就OK了
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
AVR Atmega16 Bootloader程序与上位机LabView程序
5140 浏览 6 评论
#include <ioavr.h>这个头文件我应该下什么编译器
7774 浏览 0 评论
3038 浏览 2 评论
3111 浏览 1 评论
10068 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 23:29 , Processed in 0.442870 second(s), Total 47, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号