如果要节省单片机IO口,可以用一个按键,通过判断按下的时间来执行不同的子程序,自己闲来无事随意写了个,可能不够精简,但是功能都有,proteus仿真能出来,三种按键时间,短时间按下LED1亮,中等长度时间LED2亮,长时间按下LED3亮,具体按多久,自己稍微体会下就能把握
单片机长短按键仿真原理图如下
单片机源程序:
#include #include #define uchar unsigned char #define uint unsigned int #define ulong unsigned long sbit keyback=P1^0; sbit k=P1^4; sbit key1=P1^1; sbit key2=P1^2; sbit key3=P1^3; static uint i=0; uchar keystay=0x00; uchar T0RH; uchar T0RL; void configtimer0(uchar ms) { ulong tmp; tmp=11059200/12; tmp=(ms*tmp)/1000; tmp=65536-tmp+10; T0RH=(unsigned char)(tmp>>8); T0RL=(unsigned char)tmp; TMOD &=0xF0; TMOD |=0x01; TH0=T0RH; TL0=T0RL; ET0=1; TR0=1; } void Judge(uint num) { if((5 key1=0; key2=1; key3=1; i=0; } if((50 key2=0; key1=1; key3=1; i=0; } if(num>120) { key3=0; key1=1; key2=1; i=0; } } main() { EA=1; configtimer0(10); while(1) { if((keystay&0xFF)==0x00) { Judge(i); } } } void keyscan() { keystay=(keystay<<1) | (!keyback); } void interrupt_timer0()interrupt 1 { TH0=T0RH; TL0=T0RL; keyscan(); if((keystay&0xFF)==0xFF) { i++; if(i>400) { i=0; } …………
上一篇:GY521 mpu-6050调试经验与教训
下一篇:基于单片机控制的简易自动循迹小车仿真与程序源码
推荐阅读
史海拾趣
随着公司的不断发展和壮大,Advanced Analog开始积极拓展国际市场。公司在全球范围内设立了多个分支机构和销售网络,与众多国际知名企业和品牌建立了长期稳定的合作关系。通过参与国际电子展会和交流活动,Advanced Analog的产品和技术得到了更广泛的认可和赞誉,进一步提升了公司在国际市场的知名度和影响力。
Chemi-Con公司的历史可以追溯到XXXX年,当时铝电解电容器在日本首次成功实现产品化。这不仅是电子行业的一个里程碑,也是Chemi-Con公司传奇故事的起点。公司创始人凭借对技术的深刻理解和市场的前瞻性,敏锐地捕捉到了铝电解电容器的巨大潜力,并决定将其作为公司的主营业务。在创业初期,Chemi-Con面临着资金、技术和市场等多方面的挑战,但创始人凭借着坚定的信念和不懈的努力,带领公司逐步攻克难关,奠定了在铝电解电容器领域的领先地位。
AUSTIN公司的创始人是赫伯特·奥斯汀(Herbert Austin)。在1905年,他制造了第一辆奥斯汀汽车,这标志着奥斯汀品牌的诞生。随着产品的推出,奥斯汀汽车很快获得了市场的认可,销量逐年攀升。直到1914年左右,奥斯汀始终是英国汽车工业的领导者,其汽车产品以高质量和可靠性而闻名。
随着国内市场的饱和,Alan Industries Inc.开始将目光投向海外市场。公司制定了国际化发展战略,通过设立海外分公司、参加国际展会等方式,积极开拓国际市场。同时,公司还加强了对国际市场的调研和分析,根据不同地区的市场需求和文化特点,推出了针对性的产品和服务。这些努力使得公司在国际市场上也取得了不俗的成绩。
自1947年成立以来,Etco Inc公司一直致力于电子连接技术的研发与创新。在20世纪70年代,公司成功研发出一款新型的高性能连接器,该产品凭借其卓越的性能和可靠性,迅速在汽车电子行业中占据了一席之地。这一技术突破不仅为Etco带来了可观的市场份额,还奠定了其在电子连接器领域的技术领先地位。
有调通过marvell wifi 8686 sdio接口驱动来讨论下??? 正在调sdio接口的wifi 8686驱动,sdio确认好的,读写寄存器,加载固件都没问题。有以下问题: 1. 我是直接把驱动放在bsp中编的,wince启动后自动加载wifi驱动, 并且这个wifi驱动会自行搜索热点。我的理解是wifi驱动加载固件启动完wifi芯片注册网络 ...… 查看全部问答∨ |
|
SESSION_POS_S *pTestpos1, *pTestpos2, *pTestpos3, *pPos; LIST *pMyList = NULL; int NodeIndex = 0; DPRINT("-------- lstAdd测试 -------\\n ...… 查看全部问答∨ |
|
用电位器输出一个电压值,从我watch窗口看到的ADCresult值都在变化,变化比较大。如0xabc0,b为都会能差4,帮忙分析一下可能那里设置不对。谢谢!… 查看全部问答∨ |
|
想请问你一下 那个ez430-rf2500为什么ed连上电池两个灯还是不闪。。ap的红灯在闪烁。。并且PC上温度只有一个ap温度显示。。就是说ed的没有反应。。好像是没有连接到网络。。后来又折腾了一下。。现在ap的红绿灯都在闪。。但是ed还是没反应。 ...… 查看全部问答∨ |
|
#include<reg51.h> // 包含51单片机寄存器定义的头文件unsigned char code Tab[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数字0~9的段码unsigned char int_time ; //中断次数计数变量unsigned ...… 查看全部问答∨ |
module main ( ....); wire clk1MHz; // 产生1MHz的时钟波形 // 输入为20MHz的时钟 clock_divider instT1MHz &nb ...… 查看全部问答∨ |