导航:首页 > 操作系统 > 单片机拆字实验

单片机拆字实验

发布时间:2023-01-23 16:32:48

1. 单片机将ROM单元2000H的内容读出并拆字,高位送片内RAM的50H单元低位送片外RAM的1000H单元写出完整程序。

这个题目,在这里不知道有多少人来提问了,你们都 是一个学校的吗?
MOV DPTR , #2000H
MOV A , #0
MOVC A , @A+DPTR
MOV R7 , A
ANL A , #0F0H
SWAP A
MOV 50H , A
MOV A , R7
ANL A , #0FH
MOV DPTR , #1000H
MOVX @DPTR , A

2. 单片机80c51 ORG 0000H MOV 30H,#53H MOV A,30H SWAP A ANL A,#0FH MOV 31H,A MOV A,30H ANL A,#0FH MOV

指令SWAP A执行完毕后,累加器A的值为(35H ),30H单元的值为(53H ),31H单元的值为(未知 ),32H单元的值为(未知 )
并且请简单描述上列程序的功能:是把立即数,#53H拆开成高四位和低四位,分别放入31H和32H单元中。这通常称为拆字程序。
应该是问这个程序执行,
累加器A的值为(03H ),30H单元的值为(53H ),31H单元的值为(05H ),32H单元的值为(03H )

3. MCS-51,Keil5,汇编,拆字程序

MOV DPTR,#xxxxh

MOV 41H, DPL

MOV 40H, DPH

4. 单片机基础实验3个,用WAVE软件,满分悬赏,在线急等

只做一题,其他请学做。

ORG 0000H
CLR A
MOV R0,#30H ;内部RAM首地址
MOV B, #0FFH ; 需要清零的长度
L: MOVX @R0,A
INC R0
DJNZ B,L

5. 单片机拆字拼字实验,要交作业了,急急急

MOV 31H, 30H
ANL 31H, #0FH
MOV A, 30H
SWAP A
ANL A, #0FH
MOV 32H, A

END

6. 求单片机课程设计实验 用汇编语言,基于51单片机的定时闹钟

MODE_RG EQU40H ;模式选择

MODE2 EQU 60H ;MODE值

MODE3 EQU61H

MODE4 EQU62H

MODE5 EQU63H

MODE6 EQU64H

MODE1 EQU65H

HOUR EQU41H ;小时缓冲区

MIN EQU42H ;分钟缓冲区

SEC EQU 43H ;秒缓冲区

TEMP EQU4AH

;*********闹钟缓冲区********************

H_ALARM EQU 6AH ;闹钟缓冲区

M_ALARM EQU6BH

S_ALARM EQU6CH

F_ALARM EQU6DH

;***********秒表缓冲区******************

M_SEC EQU76H

S_SEC EQU77H

;*********LED送显示临时变量*************

LED0 EQU51H

LED1 EQU52H

LED2EQU53H

LED3 EQU54H

MODE_KEYEQUP3.4

UP_KEY EQUP3.3

DOWN_KEY EQUP3.5

BUF EQU49H

ORG0000H

LJMPMAIN

ORG000BH

LJMPINT_0

ORG001BH

LJMPINT_1

ORG0080H

MAIN: MOVSP,#2FH ;堆栈初始化

MOVMODE_RG,#0 ;MODE_RG寄存器值初始化

MOVLED0,#0FEH ;初始化LED

MOVLED1,#0FDH

MOVLED2,#0FBH

MOVLED3,#0F7H

MOVMODE1,#1

MOVMODE2,#2

MOVMODE3,#3

MOVMODE4,#4

MOVMODE5,#5

MOVMODE6,#6

MOVF_ALARM,#0 ;错误2:一开始用CLRF_ALARM,这导致在后面的时候JZF_ALARM运行错误,

MOVBUF,#0 ;在于JZ指令是对累加器A全为0或者全为1进行判断,CLR只能对一位操作

MOVTMOD,#11H ;定时器初始化:定时器0,方式1,定时器1,方式1

MOVIP,#00001000B ;定时器1优先级高

MOVTH0,#3CH ;定时50MS

MOVTL0,#0B1H

MOVTH1,#0D8H ;定时10MS

MOVTL1,#0F0H

SETBEA

SETBET0

SETBET1

SETBTR0;启动定时器

MOVHOUR,#0 ;fortest

MOVMIN,#0

MOVSEC,#0 ;定时器计数器,50MS中断一次,200次则刚好1S

MOVM_SEC,#0

MOVS_SEC,#0

MOVH_ALARM,#0

MOVM_ALARM,#0

MAIN1: LCALLDISPLAY12

LCALLDISPLAY34

;CLRP1.4 TEST

JNBMODE_KEY,KEY_SCAN

MOVA,MODE_RG

CJNEA,MODE6,Y1 ;MODE6秒表

JNBDOWN_KEY,DEALDOWN ;判断秒表开关

JNBUP_KEY,DEALUP

Y1: MOVA,F_ALARM ;判断闹钟

JNZALARM

LJMPMAIN1

;-----------------------------------秒表开关程序---------------------------

DEALDOWN: LCALLDELY10MS

JBDOWN_KEY,MAIN1

H1: JNBDOWN_KEY,H1

CPLTR1

LJMPMAIN1

DEALUP: LCALLDELY10MS

JBUP_KEY,MAIN1

H2: JNBUP_KEY,H2

MOVM_SEC,#0

MOVS_SEC,#0

CLRTR1

LJMPMAIN1

;-----------------------------------闹钟扫描程序---------------------------

ALARM: MOVA,H_ALARM

CPLP1.2

CJNEA,HOUR,EXIT3

MOVA,M_ALARM

CJNEA,MIN,EXIT3

LJMPSTARTALARM

EXIT3: SETBP3.6

LJMPMAIN1

STARTALARM:CPLP3.6

JNBDOWN_KEY,OFFALARM

LJMPS1

OFFALARM: LCALLDELY10MS

JBDOWN_KEY,MAIN1

S2: JNBDOWN_KEY,S2

MOVF_ALARM,#0

SETBP3.6

LJMPMAIN1

S1: LCALLDELAY

LJMPMAIN1

;-----------------------------------键盘扫描程序---------------------------

KEY_SCAN: LCALLDELY10MS

JBMODE_KEY,MAIN1

INCMODE_RG

;SETBP1.4 测试

K1: JNBMODE_KEY,K1 ;按键直到用户松开按键

K2: MOVA,MODE_RG

CJNEA,#0,DEALMODE;不是在正常显示模式下则跳转到模式处理程序

LJMPMAIN1 ;返回主程序

;*******************模式处理程序部分

DEALMODE: MOVTEMP,#0 ;凡转入MODE处理,则首先清除TEMP

MOVA,MODE_RG ;有MODE_RG值不为5、0

CJNEA,MODE2,M0 ;判断MODE_RG值,不为1跳转

LJMPH_GLINT ;模式1,小时位闪烁

M0: CJNEA,MODE3,M1 ;不是模式2,跳转

LJMPM_GLINT ;模式2,分钟位闪烁

M1: CJNEA,MODE4,M2 ;不是模式3,跳转

LJMPH_GLINT

M2: CJNEA,MODE5,M3

LJMPM_GLINT

M3: CJNEA,MODE6,M4

MOVM_SEC,#0

MOVS_SEC,#0

LJMPMAIN1

M4: CJNEA,MODE1,M5

;CLRTR1

LJMPMAIN1

M5: MOVMODE_RG,#0

LJMPMAIN1

;*****************************MODE为1,3,小时位闪烁

//MOVTEMP,HOUR ;将TEMP赋值,防止在加的时候是在随机值的基础上增加

H_GLINT: ;CPLP1.0

MOVR0,#28

MOVR1,#28

K4: LCALLDISPLAY12 ;分开显示

LCALLDISPLAY34

E1: JNBMODE_KEY,K21 ;检测是否有按键按下,有按下则跳转到分钟位闪烁

JBUP_KEY,E9 ;判断加位有无按键按下

LJMPUP

E9: DJNZR0,K4

K6: LCALLDISPLAY34

JNBMODE_KEY,K21 ;检测是否有按键按下,有按下则跳转延时后进行模式判断

LJMPG1

K21: LCALLDELY10MS ;延时后确定有MODE按键按下,将

JBMODE_KEY,H_GLINT

W: JNBMODE_KEY,W

INCMODE_RG

CPLP1.4

LJMPDEALMODE ;确定有按下,MODE+1后返回MODE处理程序

JNBUP_KEY,UP ;判断加位有无按键按下

G1: DJNZR1,K6

LJMPH_GLINT ;调用完毕返回,实现闪烁

K3: LJMPMAIN1 ;可省略

;******************************MODE为2,4,分钟位闪烁

M_GLINT: MOVR0,#28

MOVR1,#28

K23: CPLP1.7

LCALLDISPLAY12

LCALLDISPLAY34

JNBMODE_KEY,KK ;跳转,确定是否有按键按下

JNBUP_KEY,UP ;判断加位有无按键按下

MOVA,MODE_RG

CJNEA,MODE3,E2 ;在MODE5的情况下要判断闹钟确认键有没按下

LJMPE5

E2: JNBDOWN_KEY,F2

LJMPE5

F2: LJMPONALARM2

E5: DJNZR0,K23

K24: LCALLDISPLAY12

JNBMODE_KEY,KK ;检测是否有按键按下,有按下则跳转

JNBUP_KEY,UP ;判断加位有无按键按下

MOVA,MODE_RG ;扫描闹钟确认键

CJNEA,MODE3,E7 ;在MODE5的情况下要判断闹钟确认键有没按下

LJMPG2

E7: JBDOWN_KEY,E8

CPLP1.3

LJMPONALARM2

E8: LJMPG2

KK: LCALLDELY10MS ;去抖

JBMODE_KEY,M_GLINT

W1: JNBMODE_KEY,W1

INCMODE_RG

CPLP1.4

LJMPDEALMODE ;确定有按下,MODE+1后返回MODE处理程序

G2: DJNZR1,K24

LJMPM_GLINT

;*************************位加,处理程序

;***************小时调整

UP: MOVR1,#20

UP11: INCTEMP

UP12: MOVA,MODE_RG ;判断此时的MODE,根据MODE将临时变量给对应的赋值

CJNEA,MODE2,AA0 ;不是在MODE2的情况下跳转

MOVA,TEMP

CJNEA,#24,A_UP1

MOVTEMP,#0

A_UP1: MOVHOUR,TEMP ;为MODE2,将临时变量赋给小时位

LJMPUP15

AA0: CJNEA,MODE4,UP13//UP13为分钟调整入口

MOVA,TEMP

CJNEA,#24,A_UP

MOVTEMP,#0

A_UP: MOVH_ALARM,TEMP ;模式3,将临时变量赋给闹钟的小时位

LJMPUP15 ;UP15为显示入口

;****************分钟调整入口

UP13: MOVA,MODE_RG

CJNEA,MODE3,UP14 ;不是模式2,跳转

MOVA,TEMP

CJNEA,#60,DISOVER2

MOVTEMP,#0

DISOVER2: MOVMIN,TEMP

LJMPUP15

UP14: MOVA,TEMP ;上面判断不是模式2,则必然是模式4

CJNEA,#60,DISOVER3

MOVTEMP,#0

DISOVER3: MOVM_ALARM,TEMP

LJMPUP15

UP15: LCALLDISPLAY12

LCALLDISPLAY34

DJNZR1,UP01

MOVR1,#1 ;

JNBUP_KEY,UP11

UP01: JNBUP_KEY,UP12

UP16: MOVA,MODE_RG ;松开键以后按照模式判断该返回哪种状态,不能返回DEALMODE函数

CJNEA,MODE2,UP17

LJMPH_GLINT

UP17: CJNEA,MODE3,UP18

MOVSEC,#0 ;每次设置完时间后将秒钟位置零保证时间准确

LJMPM_GLINT

UP18: CJNEA,MODE4,UP19

LJMPH_GLINT

UP19: CJNEA,MODE5,UP20

LJMPM_GLINT

UP20: LJMPMAIN1

ONALARM2: LCALLDELY10MS ;延时10MS,去抖

JBDOWN_KEY,B2 ;抖动所致,返回分钟位闪烁

LJMPK42

B2: LJMPM_GLINT

K42: JNBDOWN_KEY,K42

MOVF_ALARM,#0FFH

MOVMODE_RG,#0

LJMPMAIN1

;---------------------------------------中断程序入口---------------------

;*******************时间中断0*********************

;错误1:中断程序EXIT处用了MAIN1,导致一直处于中断状态

INT_0: PUSHACC

PUSHPSW

MOVTH0,#3CH

MOVTL0,#0B1H

INCBUF

MOVA,BUF

CJNEA,#20,EXIT

TIME: MOVBUF,#0

INCSEC

MOVA,SEC

CJNEA,#60,EXIT

MOVSEC,#00H

INCMIN

MOVA,MIN

CJNEA,#60,EXIT

MOVMIN,#00H

INCHOUR

MOVA,HOUR

CJNEA,#24,EXIT

MOVHOUR,#0

RETI

EXIT: POPPSW

POPACC

RETI

;******************时间中断1***********************

INT_1: MOVTH1,#0D8H ;定时10MS

MOVTL1,#0F0H

INCS_SEC

MOVA,S_SEC

CJNEA,#100,EXIT4

MOVS_SEC,#0

INCM_SEC

MOVA,M_SEC

CJNEA,#100,EXIT4

MOVM_SEC,#0

EXIT4: RETI

;---------------------------------------显示-----------------------------

DISPLAY12: MOVA,MODE_RG ;判断模式,决定是显示闹钟时间还是显示当前时间

CJNEA,MODE4,DIS0 ;模式四,显示闹钟

LJMPDIS01 ;MODE4

DIS0: CJNEA,MODE5,DIS20

DIS01: MOVR7,H_ALARM ;闹钟模式

LJMPDIS2

DIS20: CJNEA,MODE6,DIS21

MOVR7,M_SEC ;秒表模式,显示秒表高位

LJMPDIS2

DIS21: CJNEA,MODE1,DIS1

LJMPDIS22

DIS22: MOVR7,MIN

LJMPDIS2

DIS1: MOVR7,HOUR ;DISPLAY12显示高位

DIS2: LCALLBCTD ;判断完毕,调用显示

;将秒、分分别转码,放到R4,R3

MOVA,R4

MOVR3,A

LCALLDIVIDE

MOVDPTR,#NUMTAB

MOVP2,#0FH

MOVP2,LED0

MOVA,45H ;从拆字的出口获取值

MOVCA,@A+DPTR

MOVP0,A

LCALLDELY10MS

MOVP2,LED1

MOVA,46H

MOVCA,@A+DPTR

MOVP0,A

LCALLDELY10MS

RET

DISPLAY34: MOVA,MODE_RG ;判断模式,决定是显示闹钟时间还是显示当前时间

CJNEA,MODE4,DIS31

LJMPDIS32

DIS31: CJNEA,MODE5,DIS35

DIS32: MOVR7,M_ALARM

LJMPDIS34

DIS35: CJNEA,MODE6,DIS41

MOVR7,S_SEC ;秒表模式,显示秒表低位

LJMPDIS34

DIS41: CJNEA,MODE1,DIS33

MOVR7,SEC

LJMPDIS34

DIS33: MOVR7,MIN ;DISPLAY34显示低位

DIS34: LCALLBCTD

MOVA,R4

MOVR3,A

LCALLDIVIDE

MOVP2,LED2

MOVA,47H

MOVCA,@A+DPTR

MOVP0,A

LCALLDELY10MS

MOVP2,LED3

MOVA,48H

MOVCA,@A+DPTR

MOVP0,A

LCALLDELY10MS

SETBP2.3

RET

;--------------------二翻十:入口:R6R7出口:R2R3R4----------------------

BCTD: MOVR5,#16

CLRA

MOVR2,A

MOVR3,A

MOVR4,A

LOOP: CLRC

MOVA,R7

RLCA

MOVR7,A

MOVA,R6

RLCA

MOVR6,A

MOVA,R4

ADDCA,R4

DAA

MOVR4,A

MOVA,R3

ADDCA,R3

DAA

MOVR3,A

MOVA,R2

ADDCA,R2

DAA

MOVR2,A

DJNZR5,LOOP

RET

;-----------------------拆字:入口:R3R4出口:45H46H47H48H------------------

DIVIDE: MOVA,R3

ANLA,#0FH

MOV46H,A

MOVA,R3

ANLA,#0F0H

SWAPA

MOV45H,A;时拆字45H放时高位,46H放十低位

MOVA,R4

ANLA,#0FH

MOV48H,A

MOVA,R4

ANLA,#0F0H

SWAPA

MOV47H,A;分拆字47H放分高位,48H放分低位

RET

;------------------------------------延时----------------------------------

DELY10MS:MOVR6,#10

D1:MOVR7,#248

DJNZR7,$

DJNZR6,D1

RET

DELAY: MOV74H,#2;延时子程序,12M晶振延时1.002秒

L3: MOV72H,#10

L1: MOV73H,#249

L2: DJNZ73H,L2

LCALLDISPLAY12

LCALLDISPLAY34

JNBDOWN_KEY,OFFALARM1

LJMPS3

OFFALARM1: LCALLDELY10MS

JBDOWN_KEY,S3

S4: JNBDOWN_KEY,S4

MOVF_ALARM,#0

SETBP3.6

LJMPMAIN1

S3: DJNZ72H,L1

DJNZ74H,L3

RET

NUMTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH;码表

END

7. 单片机拆字程序 ;

就是把 2000H里的低4位放在高4位与2001H里的低4位拼成一个字节放到 2002H里
如 (2000H) = 12H (2001H)= 34H
12H&0FH = 02H 02H <> 20H
34H&0FH= 04H 20H|04H=24H
2002H里就放入了 24H

8. 单片机disassembly问题

00401031代表代码在内存中的地址
0042601c代表字符串string所在的地址

9. 单片机拆字程序详解,每条代码的意思

org 00h
Ljmp star ;开始
org 30h
star: mov a,20h ;a=20h,将20值给累加器
swap a ;a中高、低半字节交换
anl a,#0fh ;屏蔽A.A.4
mov 21h,a ;21h=a
mov a,20h ;a=20h
anl a,#0fh ;屏蔽A.A.4
mov 22h,a ;22h=a
sjmp $ ;跳到当前的地址,进入死循环

end ;结束

10. 什么是KMC仿真

KMC-S51型单片机仿真实验装置

本系统由仿真技术及实验电路有机结合组成,急支持MCS51单片机的全部原理性实验和单片机接口电路实验,又能仿真开发MCS51单片机的应用系统。
一、系统特点:
1、全部实验内容均为设计性实验,有利于实现创新教育。
2、提供独立运行、联上位机二种工作方式
3、具有示波器测量功能。能实时测量方波、正弦波、锯齿波、三角波等实验信号。
4、系统提供能将实验原理、目的、位置图等内容于一体自9Windows综合调试软件,便于多媒体教学。
5、系统提供机电一体化控制实验接口, 可做机电一体化实验。
6、系统提供点阵、液晶、语音录放、IC(I2C)卡读写、远程多机通信、直流电机转速测量与控制实验、新型通信、新型总线接口等多种丰富的单片机扩展实验模块。系统将地址总线、数据总线、控制总线等全部引出,便于课程设计与毕业设计。

二、技术指标:
1、主机含51CPU。
2、128K EPROM存放系统管理程序。另配有两片静态RAM62256构成64K用户程序RAM。
3、自带4X8键盘,进口键座,6只高亮LED七段数码显示器。可单机独立运行。
4、自带EPROM编程
5、配10位开关量输入,12位开关量显示,
6、带有±单脉冲发生器, 可调连续脉冲发生器。
7、配有机电控制接口驱动电路及执行单元(直流电机、步进电机、继电器和电子音响等)。
8、提供标准RS232异步通信接口。
9、配有各种单片机常用I/O接口芯片(A/D 0809,D/A0832,并行I/OEl8255,并行I/O口81 55, 串并转换74LSl 64, 单片机并行口输入/输出扩展74LS273/774LS244,8253定时/计数器等)。另配通用,C—14插座两只,通用,C—28插座一只, 以备扩展实验用。
10、随机配套软件兼容WINDOWS 9X/2000/XP软件平台,并提供强大的CAI课件,便于进行多媒体教学。
11、联机软件支持WINDOWS9X/2000/XP平台。
12、提供功能强大的CAI课件,便于多媒体教学。
13、配有各种新型应用电路。对新型接口和主机集成于一体,如I2C应用电路,128X64点阵LCD显示应用电路,16X16点阵LED应用电路,语音录放应用电路,直流电机转速测量与控制等。RS485通信模块、I2C总线 E平方PROM模块、看门狗电路控制模块、DSl8B20温度测量模块等新型模块已集成于主板。

三、实验内容:
系统中实验项目的设置完全按照教育部大纲要求,并有适当提高,详细实验
项目如下:
带*为需扩展的选配模块:
(一)、软件实验
I、清零程序实验 2、拆字程序实验 3、拼字程序实验 4、数据块传送实验
5、数据排序实验 6、字符串查找并统计相同字符串个数 7、双字节乘法程序 8、多分支程序设计9、定时/计数器实验 10、电脑时钟实验
(二)、硬件实验
1、8031单片机P3、PIE口应用
2、工业顺序控制
3、并行I/01718255应用
4、简单I/OE]输入扩展
5、简单I/O口输出扩展
6、A/D转换0809应用
7、D/A转换0832应用
8、串并转换实验
9、可编程键盘显示8279A应用*
10、打印机接口应用*
11、直流电机控制
12、电子音响
13、定时计数器8353A应用
14、继电器控制
15、存贮器扩展和程序存贮器扩展
16、8031串行口应用(双机通信实验、与PC机通信实验)
17、16X16点陈LED显示实验
18、语音录放实验
19、128X64LCD液晶显示接口实验
20、IC存储卡(I2C总线)读写实验
21、单片机主从式远程多机通信实验
22、直流电机转速测量与控制实验
23、RS485通信模块
24、I2C总线E2PROM模块
25、压力测量实验*

阅读全文

与单片机拆字实验相关的资料

热点内容
怎么变字体样式app 浏览:173
名字叫汤什么的视频app 浏览:207
金属加密键盘联系电话 浏览:333
自制解压牛奶盒子教程 浏览:62
编译高手的图片 浏览:922
单片机数码管显示时分秒 浏览:780
手指解压最简单的方法 浏览:343
韩国邮箱服务器地址 浏览:967
android版本介绍 浏览:410
pdf文件加密软件 浏览:410
长沙住房app怎么看备案 浏览:601
安装加密软件的电脑会被监控么 浏览:221
java微博源码 浏览:569
堆排序简单实现python 浏览:461
单片机引脚与键盘的关系 浏览:132
压缩火柴盒制作 浏览:38
谷歌地图android偏移 浏览:214
bitlocker硬盘加密空间 浏览:238
程序员鼓励师可以上吗 浏览:447
文件夹占内存却找不到了 浏览:786