- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
硬件 PIC16F883 芯片, 10 个按键, 4 位数码管。
【芯片引脚】
1RE 31MCILPIV PP
1
R Ol AN Of ULP w u f C12INO- ... 寸 2
酝 R一日,6IICSPCLK
`3
`
陨 2l AN2N REF-I CV 平 HC2 l N + 4
? RB5/AN13汀1:G
R B4/AN111/ 户1D
R 3,AN3N R 巳 +JC11N -+ 盲平4!TCJCK II C10 UT 玉 邸 5/ N4/.S,8 /C20 UT
Vss
愁 了i OSC1/CLK IIN :!I
5
6 2
了 2
8 2 1
巨9
巨
鼠 RB3JAN9JPGM.rC 1!2 1M2- R8,.2JAN8JP1B
RB1IA NH VP1CK只21N 3- RBDI AN 112, 1NT
酗 6fOS C 2/CLK.OIJTill RCO/T10 SO厅1JCK I
RC1fT1 0 S “ CC 戌
亡
IO
工
1了 ARCC了6IfRTXXJ(COKT
RC2i P1N CCP 1 RCJI SCK/SCL
16 RC5 尼DO
15 RC4fSD「I SD A
【数码管连接】 PORTC 连接数码管的 8 段 LED ,PORTA3:0 连接数码管的 4 个共阴极(控制选通位)。
【按键连接】
按键扫描程序在上一篇博文里面有说明,现在还是使用上面的扫面方式(代码都是一样的)。
用记录按键按下和弹起的时间判断是不是长按和双击。 TMR1 设置, 1:4 分频、 1:8 预分频, 计数周期为 8uS 。TMR1 溢出一次时间为 0.524288 S keypress 记录 TMR1 溢出的次数。keypress 大于等于 2 就跳出检测,认为他是长按(时间为 1.048576S ) 。keypress1 且keyrelease 1 ,再次按下的 keypress1 就认为是双击。如下图:
KP 按键按下, KR 按键弹起。
【实现代码】
1#includep16f883.inc 2
3
4
5 CONFIG _CONFIG1, _LVP_OFF _FCMEN_ON _IESO_OFF _BOR_OFF
6_CPD_OFF _CP_OFF _MCLRE_ON
7_INTRC_OSC_NOCLKOUT
_PWRTE_ON _WDT_OFF
8
9 CONFIG _CONFIG2, _WRT_OFF
_BOR21V
10
11
12
13udata_shr 14
15counter res 1 ;计数个位
16
17counter0 res 1 ;计数十位18
19counter1 res 1 ;扫描按键变量20
21counter2 res 1 ;延时程序微调参数22
23key_state res 1 ;按键状态24
25keynum res 1 ;按键标号26
27swap res 1 ;确认按键转换值
28
29keypress res 1
30
31keypressbak res 1
32
33keyrelease res 1
34
35LED1 res 1
36
37LED2 res 1
38
39LED3 res 1
40
41LED4 res 1
42
43 UDATA 44
45counter3 res 1
46
47counter4 res 1
48
49sign res 1
50
51
52
53reset code 0x0000 54
55pagesel start 56
57goto start
58
59
60
61;int_vector code 0x0004 62
63code 64
65start 66
67banksel ANSEL ;设置 PORTA 为数字模式
68
69clrf ANSEL 70
71banksel ANSELH ;设置 PORTB 为数字模式
72
73clrf ANSELH 74
75banksel TRISB ;设置 PORTB 为输入模式
76
77movlw 78
79movwf TRISB 80
81banksel WPUB ;设置 PORTB 弱上拉
82
83movlw 84
85movwf WPUB 86
87banksel OPTION_REG 88
89movlw ;TMR0 64 分频
90
91movwf OPTION_REG
92
93banksel T1CON 94
95movlw ;打开 TMR1,设置 1:8 预分频,内
文档评论(0)