完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我想要实现的功能是:用外部中断INT0判断按键,按下就修改一些状态量。另一方面,开启定时器,显示数码管。。。单独功能就可以实现,但是一旦两个功能同时要实现,就不行了。是不是我的设置(我是看着datasheet设置的,不知理解是否有错。)有问题?还是其他原因?请论坛内懂的人指教。谢谢!
部分代码如下: //中断总控制 SREG = 0X80; MCUCR = 0x02; GICR = 0X40; TCCR1B = 0x00; //stop timer TCNT1H = 0xf9; //设置 TC1 的 计数寄存器 高8位值 TCNT1L = 0xe6; //设置 TC1 的 计数寄存器 低8位值 TCCR1A = 0x00; TCCR1B = 0x04; //设置TC1 为 CLK/1024分频,启动TC1 //MCUCR = 0x00; //设置 MCU 的 控制寄存器 //GICR = 0x00; //设置 中断控制寄存器 TIMSK = 0x04; //设置 定时计数器 的 屏蔽寄存器 //SEI(); //enable interrupts #pragma interrupt_handler show_seg:9 void show_seg(void) { uchar i; TCNT1H = 0xf9; //设置 TC1 的 计数寄存器 高8位值 TCNT1L = 0xe6; //设置 TC1 的 计数寄存器 低8位值 for(i=0;i<4; i++) { switch(i) { case 0:PORTA = 0Xfe; break; case 1:PORTA = 0Xfd; break; case 2:PORTA = 0Xfb; break; case 3:PORTA = 0Xf7; break; } hc595_in(seg_table[useful_data]);// delay1us; hc595_out(); delay(5); } } #pragma interrupt_handler keypress:2 void keypress(void) { d0 = 0; d1 = 4; if((flag_condition&(0x03))!=0x03) flag_condition |= 0x03; else flag_condition &= 0xf0; } |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
AVR Atmega16 Bootloader程序与上位机LabView程序
4946 浏览 6 评论
#include <ioavr.h>这个头文件我应该下什么编译器
7607 浏览 0 评论
2901 浏览 2 评论
3011 浏览 1 评论
9850 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-7-25 03:22 , Processed in 0.647398 second(s), Total 99, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191