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

单片机实验2

发布时间:2022-02-08 03:35:04

单片机实验 二进制到BCD转换

51汇编不熟,给你写个C的吧(转非压缩的BCD),加上注释,你自己改成51汇编吧.

int i = 100; // i 用来做被除数,初值"100".
int idx = 0; // idx 用来确定存储位置的偏移,初值"0".
while( i ) // 循环条件,被除数不为"0",则继续循环.
{
Result[idx] = A / i; // Result 第 idx 偏移位置保存 A 整除 i 的值.
A -= Result[idx]*i; // A 的值 减 Result 第 idx 偏移位置 * i 的值.
i/=10; // 将 i 的值除以"10"
idx++; // Result的偏移值 加"1".
}

以上的思想是
A 整除 100 作为 百位上的BCD
(A-百位上的值) 整除 10 作为 十位上的BCD
(A-百位上的值和十位上的值) 作为个们上的BDC.

② 单片机的简单实验编程

循环3次即可。
MOV R0, #20H ;加数1地址、和的地址
MOV R1, #30H ;加数2地址
CLR C
MOV R2, #3 ;循环3次
A_LOOP:
MOV A, @R0 ;取
ADDC A, @R1 ;加
MOV @R0, A ;存
INC R0
INC R1
DJNZ R2, A_LOOP

CLR A
ADDC A, #0 ;得到进位
MOV 23H, A ;保存

RET

③ 急求:单片机实验

:
ORG 0030H
MOV 30H, #34H
MOV 31H, #56H
MOV 32H, #23H
MOV 33H, #90H
MOV 34H, #32H
MOV 35H, #68H
MOV 36H, #09H
MOV 37H, #75H
CALL SORT
SJMP $
;-----------------------------------------------------
SORT: ;最简短、高效的排序程序.
MOV B, #7 ;第一轮排序时,比较7次.
S1: MOV R0, #30H ;数据区的起始地址.
MOV R7, B
CLR PSW.5 ;清除"交换"标志位.
S2: MOV A, @R0 ;取前一个数.
INC R0
CLR C
SUBB A, @R0 ;减后一个数,前<后时,Cy=1
S3: JC S4 ;有借位时,不用交换,转移.
MOV A, @R0 ;取后一个数,准备交换.
DEC R0
XCH A, @R0 ;交换到前一个.
INC R0
XCH A, @R0 ;交换到后一个.
SETB PSW.5 ;设定"交换"标志位.
S4: DJNZ R7, S2 ;继续本轮比较.
JNB PSW.5, ENDS ;如本轮没有进行过交换,可提前结束.
DJNZ B, S1 ;下一轮,比较次数少一次.
ENDS:
RET
;-----------------------------------------------------
END

④ 16位单片机彩灯控制实验,定时器2溢出中断问题!

根据题目看 这里溢出中断只是为了达到能让人眼分辨出来的效果。 效果就像延时,但绝不等同延时。不管灯同亮同暗还是向左移动 都是采用一种不断值行定时器2溢出中断!也就是。一开始在main语句里 让定时器2值行了溢出中断,然后在中断函数里值行相应的事情(如灯同亮同暗 向左移动)值行完后 他又给TCNT 这个值赋了相同的值,就他再值行一次中断。

⑤ 51单片机实验(关于定时器计数器)

6mz的晶振 可算出一个时钟周期为2微秒,200毫秒去除一下2微秒就是10000,然后吧10000取16进制为 27A0 ,用 FFFF减27A0再加1 得 C860,用定时方式一,TL0 ,#60H
TH0, #C8H

⑥ 单片机定时/计数器实验2-脉冲计数器

这是个简易频率计,程序如下:

;---------------------------------

ORG0000H

JMPSTART

ORG000BH

JMPT0_INT

;---------------------------------

START:

MOVTMOD,#51H;/*01010001T1计数,T0定时*/

MOVTH0,#HIGH(65536-50000);50ms@12MHz

MOVTL0,#LOW(65536-50000)

MOVTH1,#0

MOVTL1,#0

SETBTR0

SETBTR1

SETBET0

SETBEA

MOVR7,#20

SJMP$

;---------------------------------

T0_INT:;50ms执行一次

MOVTL0,#LOW(65536-50000);重新写入初始值

MOVTH0,#HIGH(65536-50000);50ms@12MHz

DJNZR7,T0_END

MOVR7,#20

MOVP1,TL1

MOVP2,TH1

MOVTL1,#0

MOVTH1,#0

T0_END:

RETI

;---------------------------------

用PROTEUS仿真如下图。

图中信号的频率是5000Hz,显示的1388是16进制,这是题目中要求的形式。

⑦ 单片机实验数码转换实验代码如何补充,补充过程及注释解释

2.2.1 实验目的
1. 掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解;
2. 熟悉Keil C51 集成开发环境的操作及程序调试的方法。
2.2.2 实验设备
PC机一台,TD-NMC+教学实验系统、或“TD-PIT++教学实验系统+TD-51 系统平台”、或
“TD-PITE 教学实验系统+TD-51 系统平台”
2.2.3 实验内容
1. 将BCD 码整数0~255 存入片内RAM 的20H、21H、22H 中,然后转换为二进制整数
00H~FFH,保存到寄存器R4 中。
2. 将16 位二进制整数存入R3R4 寄存器中,转换为十进制整数,以组合BCD 形式存储在
RAM 的20H、21H、22H 单元中。
2.2.4 实验步骤
1. BCD 整数转换为二进制整数
实验参考例程:(Asm2-1.asm)
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV R0, #20H ;BCD 存放高位地址
MOV R7, #03H ;BCD 码0--255, 最多3 位
CLR A
MOV R4, A
LP1: MOV A, R4
MOV B, #0AH
MUL AB ;乘10
ADD A, @R0 ;加下一位的值
INC R0 ;指向下一单元
MOV R4, A ;结果存入R4
DJNZ R7, LP1 ;转换未结束则继续
SJMP MAIN ;设置断点, 观察实验结果R4 中的内容
END
实验步骤:
(1)输入程序,检查无误后,编译、链接程序,首先给系统复位,然后点击命令进入
调试状态;
(2)修改20H、21H、22H 单元的内容,如:00H,05H,08H;
(3)在SJMP MAIN 语句行设置断点,然后运行程序;
(4)程序遇到断点后停止程序运行,此时查看寄存器R4 的内容,应为3AH;
(5)重新修改20H、21H、22H 单元的内容,再次运行程序,验证程序的正确性;
(6)实验结束,按复位键将系统复位,点击退出调试状态。
2. 二进制整数转换为十进制整数
图2-2-1 程序流程图
实验参考例程:(Asm2-2.asm)
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV R0, #22H ;转换结果低位地址
MOV A, R0
PUSH ACC ;ACC 表示累加器A 的直接地址
MOV R7, #03H
CLR A
LP1: MOV @R0, A ;结果存储地址清零
DEC R0
DJNZ R7, LP1
POP ACC
MOV R0, A
MOV R7, #16
LP2: PUSH ACC
CLR C
MOV A, R4 ;R4中为二进制数的低位
RLC A
MOV R4, A
MOV A, R3 ;R3中为二进制数的高位
RLC A
MOV R3, A
MOV B, #03H
LP3: MOV A, @R0
ADDC A, @R0 ;执行乘2 操作
DA A ;十进制调整
MOV @R0, A ;结果保存
DEC R0
DJNZ B, LP3
POP ACC
MOV R0, A
DJNZ R7, LP2
LJMP MAIN ;设置断点观察结果, 可进行下一次转换
END
实验步骤:
(1)编写实验程序,程序流程图如图2-2-1 所示,编译、链接无误后,进入调试状态;
(2)修改R3R4 寄存器,例如A2H、FCH;
(3)在LJMP MAIN 语句行设置断点,然后运行程序;
(4)程序停止后,查看存储器20H 的内容,应为:04H、17H、24H;
(5)反复修改R3R4 寄存器的内容,运行实验程序,验证程序的正确性。

⑧ 8051单片机实验。求助。

1,安装KEIL C软件
2,如果想软件仿真的话,装个DXP
3,如果是硬件上实践的话,除了买单片机以及实验需要的元器件,还要在电脑上下载个下载软件用于把程序下载到单片机上。
4,这个实验不需要看什么书,直接去优酷看看相关流水灯视频讲解就可以了

⑨ 51单片机实验:无符号双字节乘法运算子程序

以前搞的子程序库里的
(5) 标号: MULD 功能:双字节二进制无符号数乘法

入口条件:被乘数在R2、R3中,乘数在R6、R7中。
出口信息:乘积在R2、R3、R4、R5中。
影响资源:PSW、A、B、R2~R7 堆栈需求: 2字节
MULD: MOV A,R3 ;计算R3乘R7
MOV B,R7
MUL AB
MOV R4,B ;暂存部分积
MOV R5,A
MOV A,R3 ;计算R3乘R6
MOV B,R6
MUL AB
ADD A,R4 ;累加部分积
MOV R4,A
CLR A
ADDC A,B
MOV R3,A
MOV A,R2 ;计算R2乘R7
MOV B,R7
MUL AB
ADD A,R4 ;累加部分积
MOV R4,A
MOV A,R3
ADDC A,B
MOV R3,A
CLR A
RLC A
XCH A,R2 ;计算R2乘R6
MOV B,R6
MUL AB
ADD A,R3 ;累加部分积
MOV R3,A
MOV A,R2
ADDC A,B
MOV R2,A
RET

阅读全文

与单片机实验2相关的资料

热点内容
天正命令版 浏览:82
聚合支付加密币 浏览:310
蜜源app是什么时候创立的 浏览:704
计算机专业学51单片机 浏览:208
程序员不接受反驳 浏览:294
微软自带的压缩软件 浏览:286
中国玩家在日本服务器做什么 浏览:48
12864和单片机 浏览:898
25匹空调压缩机 浏览:649
adkandroid下载 浏览:308
如何在苹果电脑上装python 浏览:327
哪个app的跑步训练内容最丰富 浏览:583
广讯通怎么删除文件夹 浏览:206
解压的视频化妆品 浏览:674
易语言新进程监视源码 浏览:941
turbo码译码算法 浏览:956
stc11f16xe单片机 浏览:282
linuxupdate命令行 浏览:578
pdf转化成wps 浏览:765
php抛出错误 浏览:159