完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
7个回答
|
|
有程序吗 贴出来看看
|
|
|
|
就是在中断里面读取管脚的电平判断就是了
|
|
|
|
#include #include float f_trig,repeat_length=50,num,c_length=314,num_show; unsigned int key_code,num_state,wei_en,dula_en; char code led_seg_code[]={0XF3,0X60,0XB5,0XF4,0X66,0XD6,0XD7,0X70,0XF7,0XF6}; //led_seg_code[0-9]代表0-9 的7 段码 ***it INT_0=P0^0; ***it Decimal=P2^3; bit sw_power=0,manual,ext_pot_trig=0,auto_trig=0; void SYSCLK_Init(void); void PORT_Init(void); void Ext_Interrupt_Init (void); void led_show(num_show); void manage_key1(void); void key_manage(unsigned char key_code); void delay(unsigned int i)//延时 { while(--i) { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } } void main() { unsigned char m,n; PCA0MD&=~0X40; SYSCLK_Init(); PORT_Init(); VDM0CN=0X80; RSTSRC|=0X02; EA=1; Ext_Interrupt_Init (); P1=0XFB; P2=0X08; m=0X08; n=0xfb; while(1) { if(sw_power==1) { led_show(f_trig); } else { delay(80000); Decimal=~Decimal; } } } void SYSCLK_Init(void) { OSCICN=0X80; RSTSRC=0X04; } void PORT_Init(void) { P0MDOUT = 0xFF; P1MDOUT = 0xFF; P2MDOUT = 0xFF; P3MDIN = 0XF7; P2SKIP = 0XFF; P0SKIP = 0X03; XBR1 = 0x40; } void led_show(num_show) { unsigned int bai,shi,ge,xiao; bai=num_show*10/10000; shi=num_show*10%10000/1000; //显示十位 ge=num_show*10%1000/100; xiao=num_show*10%100/10; P2=led_seg_code[bai]; P1=0xfe; delay(200); P2=0X00; P1=0XFF; P2=led_seg_code[shi]; P1=0xfd; delay(200); P2=0X00; P1=0XFF; P2=(led_seg_code[ge]|0x08); P1=0xfb; delay(200); P2=0X00; P1=0XFF; P2=led_seg_code[xiao]; P1=0xf7; delay(200); P2=0X00; P1=0XFF; } void Ext_Interrupt_Init (void) { TCON = 0x05; // /INT 0 and /INT 1 are edge triggered IT01CF = 0x10; // /INT0 active low; /INT0 on P0.0; // /INT1 active low; /INT1 on P0.1 EX0 = 1; // Enable /INT0 interrupts } void INT0_ISR (void) interrupt 0 { EA=0; TR1=1; delay(400); //消抖 if(INT_0==0) //再次判断是否有键按下 { key_code=P1; //获取键值 key_manage(key_code); } EA=1; } void key_manage(unsigned char keycode) { switch(keycode) { case 0x7f:manage_key1();break; } } void manage_key1(void) //sw8,启动按钮 { while(INT_0==0); manual=0; AD0EN =0; TR1=0; TR0=1; ext_pot_trig=0; num=f_trig; num_state=1; sw_power=~sw_power; wei_en=0xef; dula_en=0x10; } |
|
|
|
dyingto 发表于 2016-7-25 13:49 原是想没开机是小数点闪烁,启动按钮按下即进入中断,读取键值,没读到 |
|
|
|
图不清楚还是什么,我没看到你按键按下的时候会触发中断,接线没问题么?
|
|
|
|
线路没问题,途中标号 INT0 KEYX1就是中断了 |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
464 浏览 0 评论
478 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
439 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
994 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1056 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11790 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 17:02 , Processed in 0.937565 second(s), Total 89, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号