ImageVerifierCode 换一换
格式:DOCX , 页数:38 ,大小:108.65KB ,
资源ID:6774540      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-6774540.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(PIC单片机按键检测单双击长短按识别.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

PIC单片机按键检测单双击长短按识别.docx

1、PIC单片机按键检测单双击长短按识别硬件PIC16F883芯片,10个按键,4位数码管。【芯片引脚】【数码管连接】PORTC连接数码管的8段LED,PORTA连接数码管的4个共阴极(控制选通位)。【按键连接】按键扫描程序在上一篇博文里面有说明,现在还是使用上面的扫面方式(代码都是一样的)。用记录按键按下和弹起的时间判断是不是长按和双击。TMR1设置,1:4分频、1:8预分频,计数周期为8uS。TMR1溢出一次时间为0.524288 S keypress记录TMR1溢出的次数。keypress大于等于2就跳出检测,认为他是长按(时间为1.048576S)。keypress1 且keyreleas

2、e 1 ,再次按下的keypress1就认为是双击。如下图:KP按键按下,KR按键弹起。【实现代码】1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191

3、201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192

4、202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193

5、203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194

6、204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195

7、205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196

8、206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197

9、207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198

10、208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199

11、20921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992#include_CONFIG _CONFIG1, _LVP_OFF & _FCMEN_ON & _IESO_OFF & _BOR_OFF & _CPD_OFF &

12、 _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT_CONFIG _CONFIG2, _WRT_OFF & _BOR21Vudata_shrcounter res 1 ;计数个位counter0 res 1 ;计数十位counter1 res 1 ;扫描按键变量counter2 res 1 ;延时程序微调参数key_state res 1 ;按键状态keynum res 1 ;按键标号swap res 1 ;确认按键转换值keypress res 1keypressbak res 1keyrelease res 1

13、LED1 res 1LED2 res 1LED3 res 1LED4 res 1UDATAcounter3 res 1counter4 res 1sign res 1reset code 0x0000pagesel startgoto start;int_vector code 0x0004codestartbanksel ANSEL ;设置PORTA为数字模式clrf ANSELbanksel ANSELH ;设置PORTB为数字模式clrf ANSELHbanksel TRISB ;设置PORTB为输入模式movlw b11111111movwf TRISBbanksel WPUB ;设置

14、PORTB弱上拉movlw b11111111movwf WPUBbanksel OPTION_REGmovlw b01000101 ;TMR0 64分频movwf OPTION_REGbanksel T1CONmovlw b10010001 ;打开TMR1,设置1:8预分频,内部时钟源1:4分频movwf T1CONbanksel TRISA ;设置PORTA为输出,接数码管的共阴极movlw b11110000movwf TRISAbanksel PORTAclrf PORTAbanksel TRISCmovlw b00000000 ;设置PORTC为输出,接8段数码管movwf TRIS

15、Cclrf counter1loopmovlw HIGH Table1movwf PCLATHmovf counter1,0call Table1banksel TRISBmovwf TRISBmovf counter1,0call Table1banksel PORTBmovwf PORTBmovf PORTB,0movwf key_statemovlw b11001000iorwf key_state,1movf counter1,0call Table1xorwf key_state,0movwf swapcomf swap,1incfsz swap,1goto case1incf co

16、unter1,1movf counter1,0call Table1banksel TRISBmovwf TRISBmovf counter1,0call Table1banksel PORTBmovwf PORTBmovf PORTB,0 ;读取I/O状态movwf key_statemovlw b11001000iorwf key_state,1movf counter1,0call Table1xorwf key_state,0movwf swapcomf swap,1incfsz swap,1goto case2incf counter1,1movf counter1,0call Ta

17、ble1banksel TRISBmovwf TRISBmovf counter1,0call Table1banksel PORTBmovwf PORTBmovf PORTB,0 ;读取I/O状态movwf key_statemovlw b11001000iorwf key_state,1movf counter1,0call Table1xorwf key_state,0movwf swapcomf swap,1incfsz swap,1goto case3incf counter1,1movf counter1,0call Table1banksel TRISBmovwf TRISBmo

18、vf counter1,0call Table1banksel PORTBmovwf PORTBmovf PORTB,0 ;读取I/O状态movwf key_statemovlw b11001000iorwf key_state,1movf counter1,0call Table1xorwf key_state,0movwf swapcomf swap,1incfsz swap,1goto case4goto continuecase1btfsc key_state,4goto key2movlw d1movwf keynumcall DealKeyPressgoto continuekey

19、2btfsc key_state,2goto key3movlw d2movwf keynumcall DealKeyPressgoto continuekey3btfsc key_state,1goto key4movlw d3movwf keynumcall DealKeyPressgoto continuekey4btfsc key_state,0goto continuemovlw d4movwf keynumcall DealKeyPressgoto continuecase2;-;下面代码实现K10K8K5的按键处理btfsc key_state,2goto key8movlw d

20、10movwf keynumcall DealKeyPressgoto continue;-;处理K8key8btfsc key_state,1goto key5movlw d8movwf keynumcall DealKeyPressgoto continue;-;处理K5key5btfsc key_state,0goto case3movlw d5movwf keynumcall DealKeyPressgoto continuecase3;-;处理K6/K9btfsc key_state,1goto key6movlw d9movwf keynumcall DealKeyPressgot

21、o continuekey6btfsc key_state,0goto case4movlw d6movwf keynumcall DealKeyPressgoto continuecase4;-;处理K7btfsc key_state,0goto continuemovlw d7movwf keynumcall DealKeyPresscontinuecall displayclrf counter1goto loop;-;按键去抖,约8mSdelaymovlw d4movwf counter2LOOP2banksel TMR0clrf TMR0LOOP1banksel INTCONbtfss INTCON,T0IFgoto LOOP1bcf INTCON,T0IFdecfsz counter2,1goto LOOP2return

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2