成 都 理 工 大 学
实验报告
实验1:置数、拆字及拼字
实验人员: 08级机械二班 指导老师: 刘易
实验地点: 6C701 实验时间: 20##年3月29日
一、 实验要求
置数
1、掌握汇编语设计和调试方法,熟悉键盘操作
2、熟悉使用keil软件
3、分别将70H~8FH、2000H~20FFH置数
拆字程序
1、掌握汇编语言设计和调试方法
2、学会运用交换指令SWAP和逻辑运算指令ANL等指令
3、把2000H的内容拆开,高位送2001H低四位,低四位送2002H低四位,2001H、2002H高四位清零
4、熟悉使用keil软件
拼字
1、熟悉指令的运用
2、把2000H、2001H的低四位分别送入2002H高四位和低四位
二、实验原理
置数
N
Y
拆字
拼字
三、程序设计
置数:
ORG 00H
AJMP MAIN
ORG 30H
MAIN:
MOV R0,#70H
MOV R1,#00H
LOOP:
MOV @R0,#0FFH
INC R0
INC R1
CJNE R1,#20H,LOOP
END
拆字:
MOV DPTR,#2000H
MOV A,#12H
MOVX @DPTR,A
SWAP A
ANL A,#0FH
MOV DPTR,#2001H
MOVX @DPTR,A
MOV DPTR,#2000H
MOVX A,@DPTR
ANL A,#0FH
MOV DPTR,#2002H
MOVX @DPTR,A
END
拼字:
ORG 00H
AJMP MAIN
ORG 30H
MAIN:
MOV DPTR,#2000H
MOV A,#12H
MOVX @DPTR,A
INCDPTR
MOV A,#34H
MOVX @DPTR,A
LOOP:
MOV DPTR,#2000H
MOVX A,@DPTR
ANL A,#0FH
SWAP A
MOVB,A
INCDPTR
MOVX A,@DPTR
ANL A,#0FH
ORLA,B
INCDPTR
MOVX @DPTR,A
END
四、现象及结果
置数:
(1)
在地址框内输入"d:0x0070",按回车,显示16个“FF”。
在地址框内输入"x:0x2000",按回车,显示16个“FF”。
拆字:
在地址框内输入"x:0x2000",按回车,显示68 06 08。
拼字:
在地址框内输入"x:0x2000",按回车,显示12 34 24。
实验2: 数据传送、数据排序、查找相同数个数
实验人员: 08级机械二班 指导老师: 刘易
实验地点: 6C701 实验时间: 20##年4月6日
一、 实验要求
掌握RAM中的数据操作,熟悉8032指令系统,掌握程序设计方法,掌握汇编语言编程。
数据传送
1、把R2、R3源RAM区首地址内的R6、R7字节数据传送到R4、R5目的RAM去。
2、空间0000-1FFF放要传送的数,送数到3000-4FFFH
3、掌握RAM中的数据操作
数据排序
1、编写并调试一个排序子程序,其功能是用冒泡法将内容RAM中几个单字节无符号的正整数,按从小到大排序
2、把8032中RAM50H-5AH中放入不等的数据,运行本程序后检查50H-5AH中内容是否按从小到大排列
3、熟悉8032指令系统,掌握程序设计方法
查找相同数
查找20##-200fh中为零的数的个数
二、 实验原理
数据传送:
数据排序:
查找相同数:
N
N
Y
三、程序设计
数据传送:
ORG 0000H
AJMP MAIN
ORG 0050H
MAIN:
MOV DPTR,#0000H
MOV A,#0FFH
MOV R2,#20H
LOOP2:MOV R3,#00H
LOOP1:MOVX @DPTR,A
INC DPTR
DJNZ R3,LOOP1
DJNZ R2,LOOP2
MOV R2,#00H
MOV R3,#00H
MOV R4,#30H
MOV R5,#00H
MOV R6,#20H
MOV R7,#00H
LOOP3:
LOOP4:
MOV DPH,R2
MOV DPL,R3
MOVX A,@DPTR
MOV DPH,R4
MOV DPL,R5
MOVX @DPTR,A
INC R3
INC R5
DJNZ R7,LOOP3
INC R2
INC R4
DJNZ R6,LOOP4
END
数据排序:
org 00h
ajmp main
org 30h
main:
mov r0 , #11
mov r1 , #50h
mov r7 , #00h
loop1:
mov a , r7
movdptr , #0ffh
inc a
mov r7 , a
movc a , @a+dptr
mov @r1 , a
inc r1
djnz r0 , loop1
clr a
mov r1 , #10
loop2:
mov r0 , #50h
mov a , r1
mov r2 , a
loop3:
clr a
mov a , @r0
inc r0
mov b , @r0
mov r7 , a
subb a , b
jnb cy , next
ajmp next1
next:
mov a , r7
mov @r0 , a
dec r0
mov @r0 , b
inc r0
next1:
clr c
djnz r2 , loop3
djnz r1 , loop2
org 100h
tab:
db 12h,34h,24h,11h,56h,23h,0bh,2fh,0a2h,25h,45h
end
查找相同数:
org 00h
ajmp main
org 30h
main:
mov r0 , #16
mov r6 , #00h
mov r7 , #00h
loop1:
mov a , r7
movdptr, #0ffh
inc a
mov r7 , a
movc a , @a+dptr
movdph , #20h
movdpl , r6
movx @dptr,a
inc r6
djnz r0 , loop1
mov r1 , #16
mov r2 , #00h
movdptr, #2000h
loop2:
movx a , @dptr
incdptr
cjne a , #00h , next
inc r2
next:
djnz r1 , loop2
mov a , r2
mov dptr,#2100h
movx @dptr,a
org 100h
tab:
db 12h,34h,24h,00h,00h,11h,00h,56h
db 23h,0bh,2fh,00h,0a2h,00h,25h,45h
end
四、现象及结果分析:
数据传送
在地址框内输入"x:0x2000",按回车,显示
01, 02 03 04……十六进制数
数据排序
在地址框内输入"d:0x100",按回车,显示12,34,24,11,56,23,0b,2f,a2,25,45
在地址框内输入"d:0x50",按回车,显示0b 11 12 23 24 25 2f 34 45 56 a2
查找相同数
在地址框内输入"x:0x2000",按回车,显示
34,65,00,00,77,00,56
99,0d,2g,00,a2,00,25,89
在地址框内输入"x:0x2100",按回车,显示
05 代表有五个相同数。
实验3:I/O控制
实验人员: 08级机械二班 指导老师: 刘易
实验地点: 6C701 实验时间:20##年04月11日
一、 实验目的:
利用单片机的p1口做i/o口,学会用p1口作为输入和输出口。
二、 实验内容及要求:
按一次键只亮一个灯,不能同时亮两个或者多个。学会用Timer定时器延时,用来防抖。
三、程序设计:
org 00h
ajmp main
org 0003h
ajmpint
main:
setbea
setb ex0
setb px0
setb it0
mov a , #0ffh
mov r0 , #8
mov r7 , #20
ajmp $
int:
cjne r0 , #0 ,loop
setb c
rrc a
acalldealy
mov p1 , a
reti
loop:
clr c
rlc a
acalldealy
mov p1 , a
dec r0
reti
dealy:
movtmod ,#01h
mov th0 ,#3ch
mov tl0 ,#0b0h
setb tr0
wait:
jnb tf0 ,$
clr tf1
mov th0 ,#3ch
mov tl0 ,#0b0h
djnz r7 ,wait
reti
end
四、现象及结果分析:
1.按一次键只亮一个灯,总共八次。
2.按一下,第一个亮,再按一下,第二个亮,再按一下,第三个亮……依次循环,直到全亮,再按一下,反过来依次灭,直到全灭
实验4:I/O控制(2)
实验人员: 08级机械二班 指导老师: 刘易
实验地点: 6C701 实验时间:20##年4月18日
一:实验要求:
1.外部中断的使用
通过按键控制灯得亮和灭
2.Timer定时器的使用
程序运行时(等在亮和灭的过程中),由于程序运行比较快,我们按键时,键不平稳,一直在抖动,故可能导致每按一次键,有多个灯亮或者灭。同时,如果灯亮的时间过短,我们人眼感觉不到,故程序中必须调用延时程序,即采用Timer定时器
二、实验原理
MCS-51单片机有五个中断源,分别是INT0(入口地址0003H)、INT1(入口地址0013H)、TF0(入口地址000BH)、TF1(入口地址001BH)、串口中断(入口地址0023H),这5个中断源由TCON和SCON两个特殊功能寄存器进行控制
IE0和IE1:外部中断的中断请求标志
IT0和IT1:外部中断触发方式控制,为1时属边沿触发,为0时属电平触发
TI:串行口的发送中断标志
RI:串行口接受中断标志
MCS-51单片机对中断的开放和屏蔽是由IE控制实现的
EA:中断总控制位,=1,CPU开放中断;=0,CPU禁止所有
中断
ES:串行口中断控制位,=1:允许串行口中断,=0:屏蔽串行
口中断
ET0和ET1:定时器中断控制位,=1:允许T0、T1中断,=0:禁止T0、T1中断
EX0和EX1:外部中断控制位,=1:允许外部中断,=0:不允许外部中断
所有灯逐一全亮,然后全灭全亮三次,反方向逐一全亮,再全灭全亮三次;如此重复。
三:程序设计:
ORG 0000H
JMP MAIN
ORG 0003H
AJMPINT
MAIN:
SETBEA
SETB EX0
SETB PX0
SETB IT0
AJMP $
INT:
MOV R1,#200
MOV R2,#200
MOV R3,#200
MOV R5,#4 ;记录闪的次数
MOV R7,#8 ;控制顺着依次亮8盏灯
MOV A,#0FFH
LOOP1:
CLR C
RLC A
MOV P1,A
ACALL DELAY
DJNZ R7,LOOP1
MOV R7,#8
AJMP SH
LOOP2:
CLR C
RRC A
MOV P1,A
ACALL DELAY
DJNZ R7,LOOP2
MOV R7,#8
AJMP SH1
SH:
ACALL DELAY
MOV A,#0
MOV P1,A
ACALL DELAY
MOV A,#0FFH
MOV P1,A
DJNZ R5,SH
MOV R5,#4
AJMP LOOP2
SH1:
ACALL DELAY
MOV A,#0
MOV P1,A
ACALL DELAY
MOV A,#0FFH
MOV P1,A
DJNZ R5,SH1
MOV R5,#4
AJMP LOOP1
DELAY: ;循环延时
DL1:DJNZ R1,DL1
MOV R1,#200
DL2:DJNZ R2,DL1
MOV R2,#200
DL3:DJNZ R3,DL1
MOV R1,#200
MOV R2,#200
MOV R3,#200
RET
END
四:实验现象
八盏灯先从左往右依次全亮,然后全灭全亮三次,从右向左逐一全亮,再全灭全亮三次;如此重复:
实验5:串口通讯
实验人员: 08级机械二班 指导老师: 刘易
实验地点: 6C701 实验时间:20##年04月25日
一、 实验目的:
利用单片机的TXD RXD口,学会单片机串行口的使用。
二、 实验内容:
编写一段程序,利用单片机串行口向PC机发送输入的字符,并接收。
三、 要求:
深刻理解芯片作用,学会使用单片机的串行口,了解单片机之间的串行通讯。
四、 程序设计:
ORG 0000H
AJMP MAIN
ORG 0023H
AJMP INT
ORG 0030H
MAIN:
MOV TMOD,#20H
MOV TH1,#0F4H
MOV TL1,#0F4H
SETB TR1
MOV SCON,#50H
SETB EA
SETB ES
AJMP $
INT:CLR RI
MOV A,SBUF
MOV SBUF,A
JNB TI,$
CLR TI
RETI
END
五:实验现象与结果分析:
在串行口窗口里输入一串字符,按回车,此串字符被原样发送到显示串口里。将程序通过monitor传输到DPFLASH中,打开DPFLASH串口调试器,把波特率改为2400bps,在处理字符串对话框中输入“asdb”,点击发送,则在接受窗口中出现所发送的字符串,如图:
总结:
经过课堂上的学习,我们对单片机有了初步的了解,但感觉还不够深刻、具体。在实验课上,通过老师的指导,我们完成了实验任务,也跟进一步的了解了单片机的使用和编程,虽然还停留在比较初级的阶段,但已经感受到了单片机的魅力和无所不在,希望在以后的学习和工作中能更进一步的学习单片机。
单片机实验报告
报告人:xx
学 号:xxx
班 号:xxx
指导老师:xxx
20##-10-28
实验一 拆字程序
一、 实验目的:
掌握汇编语言设计方法;熟悉超想-3000TB综合实验仪及HK51TB仿真板的应用。
二、实验内容:
把1000H地址上的内容拆开,高位送1001H地址的低位,低位送18002H地址的低位,1001H、1002H地址的高位清零。
三、实验器材:
(1) 超想-3000TB综合实验仪1台 (2) HK51TB仿真板1块
四、程序框图:
五、实验步骤:
(1)按流程图编写程序
(2)把超想-3000TB综合实验仪与HK51TB仿真适配板连接好。
(3)设置工作模式
(4)单步调试
(5)断点调试
(6)特殊功能寄存器查看
附:实验程序
ORG 0000H
MOV DPTR,#1000H ;指定的字节
MOVX A,@DPTR
MOV B,A ;暂存
SWAP A ;交换
ANL A,#0FH ;屏敝高位
INC DPTR
MOVX @DPTR,A
INC DPTR
MOV A,B
ANL A,#0FH ;指定字节的内容屏敝高位
MOVX @DPTR,A
LOOP:SJMP LOOP
实验二 拼字程序
1.实验目的:
(1)进一步掌握汇编语言设计;
(2)学习键盘方式下的各种调试方法;
2.实验内容:
把8000H、8001H两个字节的低位分别送入8002H的高位和低位。本程序一般用于把显示缓冲区数据取出拼装成一个字节。
3.实验器材:
(1) 超想-3000TB综合实验仪1台 (2) HK51TB仿真适配板 1块
4.实验流程:
5.实验步骤:
(1)编写程序并编译成机器代码,通过键盘把机器代码输入到实验仪中。
(2)设定仿真器的仿真模式为程序和数据存储器均使用仿真器的。
(3)用断点或单步方式运行程序,检查8000H-8002H,A,B中內容变化情况。
附:实验程序
ORG 0000h
MOV DPTR,#8000H
MOVX A,@DPTR
ANL A,#0FH ;屏敝高位
SWAP A
MOV B,A ;保存
INC DPTR
MOVX A,@DPTR
ANL A,#0FH
ORL A,B ;合拼
INC DPTR
MOVX @DPTR,A ;送8002H存放
LOOP: SJMP LOOP
END
实验三 清零程序
1.实验目的:
学习DOS软件模拟的调试方法
2.实验内容:
把外部RAM(XDATA)的20##-20FFH RAM空间置零
3.实验器材:
计算机 1 台
4.准备工作:
超想3000仿真机DOS平台都提供了强劲软件模拟功能。它可以模拟包括MCS51 5个中断源在内的所有CPU资源。以下例子以DOS版平台为调试环境。
5.实验流程:
6.实验步骤:
(1) 在打开的[Open file]窗口中的Name栏输入文件名,按〈Enter〉键,即进入编辑环境
(2) 按F2键,把程序存盘。
(3) 按F9键(MASK)进入编译状态
(4) 按F8键,可以看到R0、DPTR随着F8单步运行而变化,同时,光带亦在移动。
(5) 把光标移至XDATA窗口,使用“↑↓”键或Alt+G键,使得XDATA窗口从2000H开始显示。继续按F8键,观察变化。
(6) 把光标移至LOOP1语句上,F4键,再来观察XDATA窗口。可用F5放大显示。
附:试验程序
ORG 000H
MOV R0,#00H
MOV DPTR,#2000H ;空间首地址送DPTR
LOOP: MOV a,#00h
MOVX @DPTR,A ;清零
INC DPTR ;DPTR加1
INC R0 ;字节数加1
CJNE R0,#00H,LOOP ;连续清256个字节
LOOP1:SJMP LOOP1
END
实验四 八段数码管显示
1.实验目的:
(1)了解数码管动态显示的原理。
(2)了解74LS164扩展端口的方法。
2.实验要求:
利用实验仪提供的显示电路,动态显示一行数据.
3.实验器材:
(1)超想-3000TB综合实验仪1台 (2)超想3000仿真器1台 (3)计算机1台
4.实验说明:
(1)本实验仪提供了8段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。显示共有6位,用动态方式显示74LS164是串行输入并行输出转换电路,串行输入的数据位由8155的PB0控制,时钟位由8155的PB1控制输出。写程序时,只要向数据位地址输出数据,然后向时钟位地址输出一高一低两个电平就可以将数据位置到74LS164中,并且实现移位。向显示位选通地址输出高电平就可以点亮相应的显示位。
本实验仪中数据位输出地址为0e102H,时钟位输出地址为0e102H,位选通输出地址为 0e101H。
本实验涉及到了8155 I0/RAM扩展芯片的工作原理以及74LS164器件的工作原理。
5.实验流程:
5实验电路:
附:实验程序
OUTBIT equ 0e101h ; 位控制口
CLK164 equ 0e102h ; 段控制口(接164时钟位)
DAT164 equ 0e102h ; 段控制口(接164数据位)
IN equ 0e103h ; 键盘读入口
LEDBuf equ 60h ; 显示缓冲
Num equ 70h ; 显示的数据
DelayT equ 75h ;
org 0000h
ljmp Start
LEDMAP: ; 八段管显示码
db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h
db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h
Delay: ; 延时子程序
mov r7, #0
DelayLoop:
djnz r7, DelayLoop
djnz r6, DelayLoop
ret
DisplayLED:
mov r0, #LEDBuf
mov r1, #6 ; 共6个八段管
mov r2, #00100000b ; 从左边开始显示
Loop:
mov dptr, #OUTBIT
mov a, #00h
movx @dptr, a ; 关所有八段管
mov a, @r0
mov B, #8 ; 送164
DLP:
rlc a
mov r3, a
mov acc.0, c
ANL A, #0FDH
mov dptr, #DAT164
movx @dptr, a
mov dptr, #CLK164
orl a,#02h
movx @dptr, a
anl a,#0fDh
movx @dptr, a
mov a, r3
djnz B, DLP
mov dptr, #OUTBIT
mov a, r2
movx @dptr, a ; 显示一位八段管
mov r6, #1
call Delay
mov a, r2 ; 显示下一位
rr a
mov r2, a
inc r0
djnz r1, Loop
mov dptr, #OUTBIT
mov a, #0
movx @dptr, a ; 关所有八段管
ret
Start: mov dptr,#0e100h
mov a,#03h
movx @dptr,a
mov sp, #40h
mov Num, #0
MLoop:
inc Num
mov a, Num
mov b, a
mov r0, #LEDBuf
FillBuf:
mov a, b
anl a, #0fh
mov dptr, #LEDMap
movc a, @a+dptr ; 数字转换成显示码
mov @r0,a ; 显示在码填入显示缓冲
inc r0
inc b
cjne r0, #LEDBuf+6, FillBuf
mov DelayT,#30
DispAgain:
call DisplayLED ; 显示
djnz DelayT,DispAgain
ljmp MLoop
END
实验五 电子琴
1.实验目的:
了解发出不同音调声音的编程方法。
2.实验内容:
利用实验仪上提供的键盘,使数字键1、2、3、4、5、6、7作为电子琴按键,按下即发出
相应的音调。用P3.0口发出音频脉冲,驱动喇叭.。
3.实验原理:
我们知道,声音是由振动产生的,每个音符都对应了一个频率如下表所示。利用定时/计数器T0工作在16位定时方式,通过改变TH0和TL0的值,就可以产生不同频率的脉冲,例如想产生523Hz(音符1的发音)的脉冲,其周期为1/523=1912μS,因此只要让T0定时956μS后,使P3.0取反,就可以在P3.0引脚上输出一个频率为523Hz的脉冲。
4.实验器材:
(1)超想-3000TB综合实验仪1台(2)超想3000仿真器1台(3)连线 :若干根(4)计算机1台
5.实验流程:
6.实验电路
7.实验步骤:
把P3.0用连线连至“音响与合成”框LM386的Vin1插孔上。
附:实验程序
OUTBIT equ 0e101h
IN equ 0e103h
Pulse equ 0
PulseCNT equ 50h
ToneHigh equ 51h
ToneLow equ 52h
Speaker equ 0B0H
ljmp Start
org 000bh
Timer0Int:
push PSW
clr TR0
mov TH0, ToneHigh
mov TL0, ToneLow
setb TR0
mov c, Pulse
mov Speaker, c
cpl Pulse
dec PulseCNT
pop PSW
reti
ToneTable:
dw 64578, 64686, 64778, 64821, 64898, 64968, 65029
TestKey:
mov dptr, #OUTBIT
mov a, #0
movx @dptr, a
mov dptr, #IN
movx a, @dptr
cpl a
anl a, #0fh
ret
KeyTable:
db 00h, 01h, 04h, 07h
db 0fh, 02h, 05h, 08h
db 0eh, 03h, 06h, 09h
db 0dh, 0ch, 0bh, 0ah
db 10H,10H,10H,10H,10
db 10H,10H,10H,10H,10H
GetKey:
mov dptr, #OUTBIT
mov P2, dph
; mov r0, #Low(IN)
MOV R0,#03H;
mov r1, #00100000b
mov r2, #6
KLoop:
mov a, r1
cpl a
movx @dptr, a
cpl a
rr a
mov r1, a
movx a, @r0
cpl a
anl a, #0fh
jnz Goon1
djnz r2, KLoop
mov r2, #0ffh
sjmp Exit
Goon1:
mov r1, a
mov a, r2
dec a
rl a
rl a
mov r2, a ; r2 = (r2-1)*4
mov a, r1
mov r1, #4
LoopC:
rrc a
jc Exit
inc r2
djnz r1, LoopC
Exit:
mov dptr, #OUTBIT
clr a
movx @dptr, a
mov a, r2
mov dptr, #KeyTable
movc a, @a+dptr
ret
Start:
mov sp, #70h
mov dptr,#0e100h
mov a,#03h
movx @dptr,a
mov TMOD, #01 ; Timer
mov IE, #82h ; EA=1, IT0 = 1
MLoop:
call TestKey
jz MLoop
call GetKey
mov b, a
jz MLoop ; = 0, < 1
ANL a, #!7
ANL A,#0F8H
jnz MLoop ; > 7
dec b
mov a, b
rl a ; a = a*2
mov b, a
mov dptr, #ToneTable
movc a, @a+dptr
mov ToneHigh, a
mov TH0, a
mov a, b
inc a
movc a, @a+dptr
mov ToneLow, a
mov TL0, a
setb TR0
mov PulseCNT, #100
Wait:
mov a,PulseCNT
jnz Wait
clr TR0
ljmp MLoop
end
实验六 键盘扫描显示实验
1. 实验目的:
(1)掌握键盘和显示器的接口方法和编程方法。
(2)掌握键盘扫描和LED八段码显示器的工作原理。
2. 实验原理:
在上一个实验的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。
实验程序可分成个三模块。
① 键输入模块:扫描键盘、读取一次键盘并将键值存入键值缓冲单元。
② 显示模块:将显示单元的内容在显示器上动态显示。
③ 主程序:调用键输入模块和显示模块。
3. 实验器材:
(1) 超想-3000TB综合实验仪 1 台 (2)超想3000仿真器 1 台 (3)计算机 1 台
4. 实验电路:
6.实验流程:
主程序框图
附:试验程序:
OUTBIT equ 0e101h ; 位控制口
CLK164 equ 0e102h ; 段控制口(接164时钟位)
DAT164 equ 0e102h ; 段控制口(接164数据位)
IN equ 0e103h ; 键盘读入口
ORG 0000H
LJMP STAR
KEY1: MOV 13H,#06H
MOV 12H,#20H
KEY2: MOV A,12H
CPL A
MOV R7,A
MOV DPTR,#0E101H
MOV A,R7
MOVX @DPTR,A
MOV A,12H
CLR C
RRC A
MOV 12H,A
MOV DPTR,#0E103H
MOVX A,@DPTR
MOV R7,A
MOV A,R7
CPL A
MOV R7,A
MOV A,R7
ANL A,#0FH
MOV 14H,A
DEC 13H
MOV R7,13H
MOV A,R7
JZ KEYDIS
MOV A,14H
JZ KEY2
KEYDIS: MOV A,14H
JZ TESTKEY5
MOV A,13H
ADD A,ACC
ADD A,ACC
MOV 13H,A
MOV A,14H
JNB ACC.1,TESTKEY
INC 13H
SJMP TESTKEY2
;== 键盘扫描==
TESTKEY: MOV A,14H
JNB ACC.2,TESTKEY1
INC 13H
INC 13H
SJMP TESTKEY2
TESTKEY1: MOV A,14H
JNB ACC.3,TESTKEY2
MOV A,#03H
ADD A,13H
MOV 13H,A
TESTKEY2: MOV DPTR,#0E101H
CLR A
MOVX @DPTR,A
TESTKEY3:MOV R7,#0AH
LCALL MLOOP
LCALL MLOOP4
MOV A,R7
JNZ TESTKEY3
MOV R7,13H
MOV A,R7
MOV DPTR,#0134H
MOVC A,@A+DPTR
MOV R7,A
RET
TESTKEY4: DB 22H ;"
TESTKEY5: MOV R7,#0FFH
RET
GETKEY: MOV 10H,#20H
MOV 0EH,#00H
GETKEY1: MOV A,0EH
CLR C
SUBB A,#06H
JNC GOON2
MOV DPTR,#0E101H
CLR A
MOVX @DPTR,A
MOV R7,0EH
MOV A,#08H
ADD A,R7
MOV R0,A
MOV A,@R0
MOV R7,A
MOV 11H,R7
MOV 0FH,#00H
GETKEY2: MOV A,0FH
CLR C
SUBB A,#08H
JNC GOON1
MOV A,11H
JNB ACC.7,KLOOP
MOV DPTR,#0E102H
MOV A,#01H
MOVX @DPTR,A
SJMP KLOOP1
KLOOP:MOV DPTR,#0E102H
CLR A
MOVX @DPTR,A
KLOOP1: MOV DPTR,#0E102H
MOVX A,@DPTR
MOV R7,A
MOV A,R7
ORL A,#02H
MOV R7,A
MOV A,R7
MOVX @DPTR,A
MOV DPTR,#0E102H
MOVX A,@DPTR
MOV R7,A
MOV A,R7
ANL A,#0FDH
MOV R7,A
MOV A,R7
MOVX @DPTR,A
MOV A,11H
ADD A,ACC
MOV 11H,A
INC 0FH
SJMP GETKEY2
GOON1: MOV DPTR,#0E101H
MOV A,10H
MOVX @DPTR,A
MOV R7,#01H
LCALL MLOOP
MOV A,10H
CLR C
RRC A
MOV 10H,A
INC 0EH
SJMP GETKEY1
GOON2: RET
WAIT: MOV DPTR,#0E100H
MOV A,#03H
MOVX @DPTR,A
MOV 08H,#0FFH
MOV 09H,#0FFH
MOV 0AH,#0FFH
MOV 0BH,#0FFH
MOV 0CH,#00H
MOV 0DH,#00H
WAIT1: LCALL GETKEY
LCALL MLOOP4
MOV A,R7
JZ WAIT1
LCALL KEY1
MOV R6,#00H
MOV R6,#00H
MOV A,R7
ANL A,#0FH
MOV R7,A
MOV A,#24H
ADD A,R7
MOV DPL,A
MOV A,#01H
ADDC A,R6
MOV DPH,A
CLR A
MOVC A,@A+DPTR
MOV R7,A
MOV 0DH,R7
SJMP WAIT1
RET
TAB:
Q0124: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H ;…………
Q012C: DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71H ;…………
Q0134: DB 00H, 01H, 04H, 07H, 0FH, 02H, 05H, 08H ;.........
Q013C: DB 0EH, 03H, 06H, 09H, 0DH, 0CH, 0BH, 0AH ;........
Q0144: DB 10H, 11H, 12H, 13H, 14H, 15H, 16H ;.......
MLOOP: MOV 15H,R7
MLOOP1: MOV R7,15H
DEC 15H
MOV A,R7
JZ MLOOP3
MOV 16H,#64H
MLOOP2: MOV A,16H
JZ MLOOP1
DEC 16H
SJMP MLOOP2
SJMP MLOOP1
MLOOP3: RET
MLOOP4: MOV DPTR,#0E101H
CLR A
MOVX @DPTR,A
MOV DPTR,#0E103H
MOVX A,@DPTR
MOV R7,A
MOV A,R7
CPL A
MOV R7,A
MOV A,R7
ANL A,#0FH
MOV R7,A
RET
STAR: MOV R0,#7FH
CLR A
STAR1: MOV @R0,A
DJNZ R0,STAR1
MOV SP,#16H
LJMP WAIT
END
单片机实验报告学生姓名学号专业指导教师学院信息与电气工程学院20xx年11月单片机实验报告实验一MCS51指令系统实验数据排序1实…
通信与信息工程学院20xx20xx学年第二学期实验报告课程名称单片机原理及应用专业班级学号学生姓名指导教师日期20xx年4月15日…
题目单片机组成原理实验报告学院计算机科学与工程学院专业信息安全姓名学号20xx年12月8日实验一输入输出接口编程一实验目的1掌握K…
51单片机课程设计报告学院:专业班级:姓名:指导教师:设计时间:51单片机课程设计一、设计任务与要求1.任务:制作并调试51单片机…
海南大学届单片机实验报告4份论文题目学生姓名学号所在院系专业班级授课教师完成时间蜂鸣器实验实验目的1熟悉实验板中蜂鸣器工作原理掌握…
单片机原理实验报告实验一熟悉μ’nSP?IDE集成开发环境下C语言程序的编写【实验目的】1.熟悉μ’nSP?IDE集成开发环境的使…
PIC单片机技术上机实验报告实验项目:定时/计数姓名:专业:班级:学号:学期:1314学年2学期20xx一、实验名称×××二、实验…
题目单片机组成原理实验报告学院计算机科学与工程学院专业信息安全姓名学号20xx年12月8日实验一输入输出接口编程一实验目的1掌握K…
绪论单片机应用简述电子时钟简介电子时钟的基本特点任务要求设计方案控制系统的硬件设计芯片的选择AT89S51的功能概述AT89S51…
实验一数码管实验一实验目的1了解数码管的显示原理2掌握JXARM92440中数码管显示编程方法二实验原理7段LED由7个发光二极管…