深圳市华胄科技有限公司 >> MCU专题 >> MCU单片机


MCU51学习例程----按键扫描



提交者 华胄斑竹  在  2008-6-23 14:04:15 

上一篇 下一篇
;=================================================
; 按键扫描
;=================================================
;
; mcu51实验板配套学习例程
;
;=================================================
ORG 0000H
LJMP START;转入主程序
ORG 0010H
START:


MAIN:


MOV A,#00000011B
ORL A,P3
CPL A
JZ MAIN
LCALL DELAY10MS ;去抖动
MOV A,#00000011B
ORL A,P3
CPL A
JZ MAIN


JB ACC.2,KEY_SW1
JB ACC.3,KEY_SW2
JB ACC.4,KEY_SW3
JB ACC.5,KEY_SW4
JB ACC.6,KEY_SW5
JB ACC.7,KEY_SW6
LJMP MAIN
KEY_SW1:
CPL P1.0
AJMP KEY_END
KEY_SW2:
CPL P1.1
AJMP KEY_END
KEY_SW3:
CPL P1.2
AJMP KEY_END
KEY_SW4:
CPL P1.3
AJMP KEY_END
KEY_SW5:
CPL P1.4
AJMP KEY_END
KEY_SW6:
CPL P1.5
AJMP KEY_END


KEY_END:
MOV A,#00000011B
ORL A,P3
CPL A
JNZ KEY_END
LJMP MAIN


DELAY10MS:
MOV R4,#20
DELAY10MSA:
MOV R5,#247
DJNZ R5,$
DJNZ R4,DELAY10MSA
RET
END



单片机教程,五系列(55讲)电子书全集下载

论坛精选:
单片机教程,MCS51单片机从零开始 第一讲:初识单片机
http://bbs.huazhoucn.com/Topic.aspx?id=2539
单片机教程,MCS51单片机从零开始 第二讲:MCS-51单片机简述
http://bbs.huazhoucn.com/Topic.aspx?id=2540
单片机教程,MCS51单片机从零开始 第三讲:单片机相关常用名词解释
http://bbs.huazhoucn.com/Topic.aspx?id=2541
单片机教程,MCS51单片机从零开始 第四讲:计算机中数的表示及运算
http://bbs.huazhoucn.com/Topic.aspx?id=2542
单片机教程,MCS51单片机从零开始 第五讲:常用逻辑电路
http://bbs.huazhoucn.com/Topic.aspx?id=2544
单片机教程,MCS51单片机从零开始 第六讲:51单片机的结构及其组成
http://bbs.huazhoucn.com/Topic.aspx?id=2545
单片机教程,MCS51单片机从零开始 第七讲:51单片机的引脚
http://bbs.huazhoucn.com/Topic.aspx?id=2546
单片机教程,MCS51单片机从零开始 第八讲:8051单片机I/O引脚工作原理
http://bbs.huazhoucn.com/Topic.aspx?id=2547
单片机教程,MCS51单片机从零开始 第九讲:8051单片机的存储器结构
http://bbs.huazhoucn.com/Topic.aspx?id=2548
单片机教程,MCS51单片机从零开始 第十讲:编码及译码器工作原理
http://bbs.huazhoucn.com/Topic.aspx?id=2549
单片机教程,MCS51单片机从零开始 第十一讲:存储器的存储原理
http://bbs.huazhoucn.com/Topic.aspx?id=2550
单片机教程,MCS51单片机从零开始 第十二讲:51单片机的特殊功能寄存器
http://bbs.huazhoucn.com/Topic.aspx?id=2551
单片机教程,MCS51单片机从零开始 第十三讲:51单片机CPU的内部结构
http://bbs.huazhoucn.com/Topic.aspx?id=2552
单片机教程,MCS51单片机从零开始 第十四讲:定时器/计数器的基本结构及工作原理
http://bbs.huazhoucn.com/Topic.aspx?id=2553
单片机教程,MCS51单片机从零开始 第十五讲:51单片机的中断系统
http://bbs.huazhoucn.com/Topic.aspx?id=2554
单片机教程,MCS51单片机从零开始 第十六讲:51单片机的复位
http://bbs.huazhoucn.com/Topic.aspx?id=2555
单片机教程,MCS51单片机从零开始 第十七讲:51单片机执行指令的过程
http://bbs.huazhoucn.com/Topic.aspx?id=2556
单片机教程,MCS51单片机从零开始 第十八讲:51单片机的延时及时序分析
http://bbs.huazhoucn.com/Topic.aspx?id=2557
单片机教程,MCS51单片机从零开始 第十九讲:汇编语言基础
http://bbs.huazhoucn.com/Topic.aspx?id=2558
单片机教程,MCS51单片机从零开始 第二十讲:汇编语言及汇编过程
http://bbs.huazhoucn.com/Topic.aspx?id=2556
单片机教程,MCS51单片机从零开始 第二十一讲:汇编程序的基本结构
http://bbs.huazhoucn.com/Topic.aspx?id=2560
单片机教程,MCS51单片机从零开始 第二十二讲:51单片机的寻址方式
http://bbs.huazhoucn.com/Topic.aspx?id=2561
单片机教程,MCS51单片机从零开始 第二十三讲:数据传送类指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2562
单片机教程,MCS51单片机从零开始 第二十四讲:算术运算类指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2563
单片机教程,MCS51单片机从零开始 第二十五讲:逻辑运算及移位指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2564
单片机教程,MCS51单片机从零开始 第二十六讲:控制转移类指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2565
单片机教程,MCS51单片机从零开始 第二十七讲:布尔变量操作指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2566
单片机教程,MCS51单片机从零开始 第二十八讲:伪指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2567

1 楼  提交者:Guest 在 2008-6-23 16:59:18
.......
2 楼  提交者:Guest 在 2008-6-24 8:49:16
jgjgj
3 楼  提交者:Guest 在 2008-6-30 10:24:28
看看
4 楼  提交者:Guest 在 2008-7-1 13:37:46
hao 
5 楼  提交者:Guest 在 2008-7-13 20:36:23
ok
6 楼  提交者:Guest 在 2008-7-17 11:32:45
vb
7 楼  提交者:Guest 在 2008-7-21 15:39:01
8 楼  提交者:Guest 在 2008-7-21 15:41:07
fsdafasdf
9 楼  提交者:Guest 在 2008-7-23 19:59:08
zxzc
10 楼  提交者:Guest 在 2008-7-23 21:45:51
学习学习
11 楼  提交者:Guest 在 2008-7-25 10:13:24
wwo hui fu 
12 楼  提交者:Guest 在 2008-7-28 11:08:54
恶心
13 楼  提交者:Guest 在 2008-7-28 14:05:07
要回复才给看啊 ?
14 楼  提交者:春春 在 2008-7-30 21:28:33
vb 
15 楼  提交者:xjl 在 2008-7-31 13:22:13
16 楼  提交者:Guest 在 2008-8-3 16:08:50
用。。。
17 楼  提交者:xiabing513 在 2008-8-4 16:12:09
·【七】色云彩漫天开 【夕】照余辉踏浪来 【情】怀依旧景物改 【人】在天涯心何在 【节】竹摇响相思曲 【祝】福随风任飘絮 【福】寿安康求天庇 【有】缘自然他乡遇 【情】到深处无怨尤 【人】事沧桑却何求 【终】老一世随性修 【成】败到头且自由 【眷】恋往事已烟云 【属】意何处但任恁
18 楼  提交者:Guest 在 2008-8-7 16:40:58
a
19 楼  提交者:Guest 在 2008-8-8 16:23:20
意何处但任恁
20 楼  提交者:Guest 在 2008-8-8 17:06:25
看看
21 楼  提交者:Guest 在 2008-8-9 0:26:30
实验任务学会数码管的显示原理及编程。相关常识说明:用单片机进行数码显示应具有显示器件;应用最广泛的是7段数码管。习惯上说是7段,实际含小数点是8段;下面我们称其为段数码管。                  图1段数码管的段排列和内结构见下图:段排列                 图2 内部接线图段数码管从内部接线上分共阳和共阴两种;上图左为共阴,右为共阳。在电路设计时应根据情况决定采用共阳或共阴,其基本原则是:若单片机io口直接驱动数码管个段,最好采用共阳数码管,因为51单片机io口输出高电平时输出的电流很小,数码管不会太亮;若数码管是通过驱动芯片与单片机相连的,就要看驱动芯片对数码管极性的要求啦。电路原理图:(单片机没画出)                     图3                 这里的数码管直接用单片机p0口驱动,v2、v3是各数码管公共阳极的控制三极管,r3~r5和r13~r16是数码管个段LED的限流电阻。当A、B、C、D、E、F、G、DP 端接低电平,p2.0也为地电平时,L9 数码管各段全部点亮;若p2.0=1,p2.1=0则LED10各段全部点亮。下面我们来写一段程序,让一位数码管显示数字star: mov dptr,#numtab ;指定查表启始地址      mov a,#3         ;显示3,你可以改变该数显示      MOVC A,@A+DPTR      mov p0,a      clr p2.0         ;开个位显示      ljmp $;段数码管各划的数字排列表numtab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h ;显示内容的对应代码           ;0    1     2   3    4   5   6   7    8   9  ;显示内容        db 88h,83h,0c6h,0a1h,86h,8eh         ;  a   b   c    d    e   f      end在前一节讲过,数码管各段加的电平不同,会显示不同的图形;那么,要想数码管显示“1”,就必须使数码管“B”“C”段点亮,其他段熄灭;由于共阳数码管是0电平点亮段,高电平熄灭段。即:“DP G F E D C B A” 也就是说,将数码管从 DP--A 各段按顺序排列,其高低电平应呈现二进制“11111001”状态,换算成十六进制就是“F9H”;显然,你想显示的所有数字和字符,都必须这样一一对应的转换成十六进制数据。其他数字字符的hex代码见程序的 numtab 表。遗憾的是,这些hex代码是没有规律可寻的,我们只有先将所希望显示的数字字符的hex代码制成表格,在需要显示某个数字字符时进行表格查询,查询到对应代码后再将代码送数码管显示,这样,我们希望显示并能理解的数字字符就显示了出来。本实验程序在开始就将显示代码表的基地址赋给dptr,第二句是准备查找数字“3”的段代码,也就是准备让数码管显示“3”。“MOVC A,@A+DPTR”是将累加器acc中当前的数据加上dptr的数据,作为查表地址,并将这个地址中的数据传送到累加器acc覆盖原数据。acc中现在的数据就是“3”的段代码数据。第4句是将“3”的段代码数据送p0驱动数码管显示;第5句是打开LED9的公共阳极;第6句是跳转到当前行,也就是说程序一直在本行循环。改变第二句 #号后面的数,将更改显示内容。但#号后的数不能大于15,因numtab表中不包括“0”只有15格可查的数据!通过前面的学习,大家对数码管的显示原理已很清楚,下面这段程序请大家自行分析:a_bit equ 20h         ;个位数存放处b_bit equ 21h         ;十位数存放处temp equ 22h          ;计数器寄存器star:   mov temp,#0   ;初始化计数器stlop:  acall display        inc temp        mov a,temp        cjne a,#100,next ;=100重来        mov temp,#0next:   ljmp stlop;显示子程序display: mov a,temp  ;将temp中的十六进制数转换成10进制          mov b,#10   ;10进制/10=10进制         div ab         mov b_bit,a ;十位在a         mov a_bit,b ;个位在b         mov dptr,#numtab ;指定查表启始地址         mov r0,#4 dpl1:    mov r1,#250 ;显示1000次dplop:   mov a,a_bit ;取个位数         MOVC A,@A+DPTR ;查个位数的7段代码         mov p0,a ;送出个位的7段代码         clr p2.0 ;开个位显示         acall d1ms ;显示1ms         setb p2.0         mov a,b_bit ;取十位数         MOVC A,@A+DPTR ;查十位数的7段代码         mov p0,a ;送出十位的7段代码         clr p2.1 ;开十位显示         acall d1ms ;显示1ms         setb p2.1         djnz r1,dplop ;100次没完循环         djnz r0,dpl1 ;4个100次没完循环         ret;1MS延时(按12MHZ算);====================================================D1MS: MOV R7,#80       DJNZ R7,$      RET;7段数码管各划的数字排列表numtab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h        ;0 1 2 3 4 5 6 7 8 9        db 88h,83h,0c6h,0a1h,86h,8eh        ;a b c d e f       end关于数码管的静态显示及动态显示原理,我们在后面会单独的实验讲解。这里只是给大家一个基础的认识。
22 楼  提交者:Guest 在 2008-9-10 22:44:27
谢谢
23 楼  提交者:Guest 在 2008-9-20 12:58:07
hao
24 楼  提交者:gapple 在 2008-9-21 20:47:01
看看,好资料
25 楼  提交者:robin42202 在 2008-9-23 15:57:21
26 楼  提交者:王者 在 2008-9-30 1:36:19
JHG
27 楼  提交者:中国长航 在 2008-10-16 21:04:40
28 楼  提交者:Guest 在 2008-10-20 17:31:08
ae awe ew aw  wea wa raw 
29 楼  提交者:阿甘 在 2008-11-3 3:13:06
30 楼  提交者:小宾 在 2008-11-11 17:17:35
上一篇 下一篇
当前第〖1〗页 共有2页 转到第 1 2