独立连接式键盘例1: KEV:JNBP1.0,FUNc1;逐键判别 JNB P1.1FUNC2 JNB P1.2 FUNC3 /11.0 P1.1 JNB P1.3FUNC4 P1.2 RET;无任何键按下由此返回 P1.3 FUNc1::做P1.0要求的“功能1 RET AT89C51 FUNc2::做P1.1要求的“功能2” RET FUNC3:…:做P12要求的“功能3” RET FUNc4:做P13要求的“功能4” RET 特点:此子程序需不断完时调用,否则可能 漏判。4个键的优先级由指令顺序决定
独立连接式键盘例1: 特点:此子程序需不断(或定时)调用,否则可能 漏判。4个键的优先级由指令顺序决定。 P1.0 P1.1 P1.2 P1.3 KEY: JNB P1.0,FUNC1 ;逐键判别 JNB P1.1,FUNC2 JNB P1.2,FUNC3 JNB P1.3,FUNC4 RET ;无任何键按下由此返回 FUNC1: …… ;做P1.0要求的“功能1” RET FUNC2: …… ;做P1.1要求的“功能2” RET FUNC3: …… ;做P1.2要求的“功能3” RET FUNC4: …… ;做P1.3要求的“功能4” RET AT89C51
独立连接式键盘例2 上拉) P1.0 ORG 0003H P1.1 LMP KEY P1.2 P1.3 KEY:JNBP10FUNc1;逐键判别士 & At89C51 JNB P11 FUNC2 INTO UNB P1.2. FUNC3 JNB P13 FUNC4 特点: RETI;无任何键按下由此返回 @此子程序采用中断 RE∴…;做P10要求的“功能1”查询不会漏判省时。 FUNC1 @键的优先级由指令 FUNC2∷……:做P11要求的“功能2”顺序决定。 RETI @为防止一次按键多 FUNc3:∷…:做P12要求的“功能3”次中断,在功能子程 RETI 序里应安排“关/开中 FUNC4:…:P13要求的“功能4”断指令”并“延时”。 RETI
独立连接式键盘例2 特点: @此子程序采用中断 查询不会漏判,省时。 @键的优先级由指令 顺序决定。 @为防止一次按键多 次中断,在功能子程 序里应安排“关/开中 断指令”并“延时” 。 P1.0 P1.1 P1.2 P1.3 ORG 0003H LJMP KEY ………… KEY: JNB P1.0,FUNC1 ;逐键判别 JNB P1.1,FUNC2 JNB P1.2,FUNC3 JNB P1.3,FUNC4 RETI ;无任何键按下由此返回 FUNC1: …… ;做P1.0要求的“功能1” RETI FUNC2: …… ;做P1.1要求的“功能2” RETI FUNC3: …… ;做P1.2要求的“功能3” RETI FUNC4: …… ;做P1.3要求的“功能4” RETI INT0 & (上拉) AT89C51
矩阵式键盘 P.198例 PA7 AT89C51 8155 PA6 PO AD0-7 PA5 ALE ALE PA4 P2.7 CE PA3 P2.0 IO/M PA2 WR WR PAl RD PAO 5v RESET RESET 0481216202428 EA PCO 1317212529 0列 +5v 列 PCI 6101418222630 线]PC2 8155控制寄存器:0100H u115 8155A口地址:0101H PC3 3列 8155C口地址:0103H A口为输出C口为输入口 0行 行线 行 此图参照P198图6-26画的但按照书上给的程序键值标错了
矩阵式键盘 P.198例 AT89C51 8155 P0 ALE CE RESET AD0-7 EA RESET RD WR WR RD PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 PC0 PC1 PC2 PC3 P2.7 ALE +5v +5v 行线 列 线 0行 7行 0列 3列 0 4 8 12 16 20 24 28 1 5 9 13 17 21 25 29 2 6 10 14 18 22 26 30 3 7 11 15 19 23 26 31 此图参照P198图6-26画的,但按照书上给的程序,键值标错了。 P2.0 IO/M 8155 控制寄存器:0100H 8155 A口地址: 0101H 8155 C口地址: 0103H A口为输出 C口为输入口
P.198图的标注 P.198图的正确标注 行线(PA0-PA7) 行线(PA0-PA7) 0行1行2行3行4行5行6行7行 0行1行2行3行4行5行6行7行 6 216202428 0列 列\1列+16171819202223线1列 8910112131415 0列 列 1317212529 线 6101418222630 PC 2列 PC 2526272829 列 0-3 111519232631 3列← 列
P.198图的标注 0行 1行 2行 3行 4行 5行 6行 7行 行线(PA0-PA7) 列 线 PC 0-3 0列 3列 0 4 8 12 16 20 24 28 1 5 9 13 17 21 25 29 2 6 10 14 18 22 26 30 3 7 11 15 19 23 26 31 1列 2列 0行 1行 2行 3行 4行 5行 6行 7行 行线(PA0-PA7) 列 线 PC 0-3 0列 3列 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1列 2列 P.198图的正确标注
P.198图的正确标注 列线PC0-3 0123 行线(PA0-PA7) 0行 456 1行 0行1行2行3行4行5行6行7行 2行 891011 行线 3行 1213141 PAO 0481216202428 4行 61718 20212223 PA7 列 591317212529 5行 线」1列·2601418226|a0 6行 4252627 2列 0-3 111519232631 7行 28293031 列 列 左右两图是一样的 列 2列 习惯说“横行竖列 3列
0 行 1 行 2 行 3 行 4 行 5 行 6 行 7 行 行线(PA0 -PA7) 列线 PC 0-3 0 列 3 列 0 4 8 12 16 20 24 28 1 5 9 13 17 21 25 29 2 6 10 14 18 22 26 30 3 7 11 15 19 23 26 31 1 列 2 列 P.198图的正确标注 0 行 1 行 2 行 3 行 4 行 5 行 6 行 7 行 0 列 1 列 2 列 3 列 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 列线PC0 - 3 行线 PA0 | PA7 左右两图是一样的 习惯说 “横行竖列