单片机 实验程序 答案
单片机实验指导书答案

实验一实验报告书写要求:一、实验目的二、实验仪器与设备三、实验内容(每题后面附上答案)四、实验总结(1、掌握了单片机仿真软件的使用2、了解了单片机编程、调试方法)1、ORG 0MOV R4,#0JMP $END2、ORG 0MOV PSW,#0JMP $END3、ORG 0MOV 30H ,#0JMP $END4、ORG 0CLR AMOV DPTR ,#0010HMOVX @DPTR , AJMP $END实验二实验报告书写要求:一、实验目的二、实验仪器与设备三、实验内容(每题后面附上答案)四、参考程序框图五、实验总结六、思考题1、ORG 0CLR AMOV DPTR ,#0010HMOVX @DPTR , AINC DPTRMOVX @DPTR , AJMP $END2、ORG 0MOV R0,#10MOV R1,#30HLOOP: MOV @R1,#0HINC R1DJNZ R0, LOOPJMP $END思考题ORG 0MOV R0,#0FFHMOV DPTR,#3000HMOV A,#55HLOOP: MOVX @DPTR,AINC DPTRDJNZ R0, LOOPJMP $END实验三实验报告书写要求:一、实验目的二、实验仪器与设备三、实验内容与步骤(每题后面附上答案)四、参考程序框图五、实验总结六、思考题ORG 0MOV R7, #48MOV R0, #30HMOV DPTR, #0010HL: MOV A, @R0MOVX @DPTR, AINC R0INC DPTRDJNZ R7, LJMP $END实验四实验报告书写要求:一、实验目的二、实验仪器与设备三、实验内容与步骤(每题后面附上答案)四、参考程序框图五、实验总结(了解了单片机的运算类指令,同时也了解了单片机编程、调试方法。
)ORG 0CLR CMOV R7,#10MOV R0,#30HMOV R1,#40HMOV DPL,#50HLOOP:MOV A,@R0ADDC A,@R1MOVX @DPTR,AINC R0INC R1INC DPLDJNZ R7,LOOPJMP $END实验六实验报告书写要求:一、实验目的二、实验仪器与设备三、实验内容与步骤(每题后面附上答案)四、参考框图五、电路图七、思考题从右往左循环点亮每只发光二极管LED EQU 01HORG 0HMOV A, #LEDLOOP:MOV P1, ACALL DELAYRL AJMP LOOPDELAY:MOV R6, #0MOV R7, #0 DLLOOP:DJNZ R6, $DJNZ R7, DLLOOP RETEND思考题:循环现实00-0FH MOV A,#0FH LOOP: MOV P1,AINC ALCALL DELAYDJNZ A, LOOPLJMP LOOP DELAY:MOV R6, #0MOV R7, #0DL:DJNZ R6, $DJNZ R7, DLRETEND。
单片机的课后习题答案

单片机的课后习题答案《单片机的课后习题答案》在学习单片机的课程中,课后习题是巩固知识、提高能力的重要环节。
通过解答习题,我们可以更好地理解和掌握单片机的相关知识,提高自己的编程能力和解决问题的能力。
下面,我们就来看一下单片机的课后习题答案。
1. 请用C语言编写一个程序,实现将两个数相加并输出结果。
```c#include <stdio.h>int main() {int a, b, sum;printf("请输入两个数:\n");scanf("%d %d", &a, &b);sum = a + b;printf("它们的和是:%d\n", sum);return 0;}```2. 请用汇编语言编写一个程序,实现将一个数加1并输出结果。
```assemblysection .datanum dd 5section .textglobal _start_start:mov eax, [num]add eax, 1mov [num], eaxmov eax, 4mov ebx, 1mov ecx, nummov edx, 4int 0x80mov eax, 1int 0x80```3. 请用单片机编写一个程序,实现控制LED灯闪烁。
```c#include <reg52.h>sbit LED = P1^0;void main() {while(1) {LED = 0;delay(1000);LED = 1;delay(1000);}}```通过以上几道习题的解答,我们可以看到单片机的编程语言多样,包括C语言、汇编语言以及单片机自带的编程语言。
通过不同的编程语言,我们可以实现各种各样的功能,比如简单的加法运算、数值操作以及控制外部设备的操作。
这些习题的解答不仅是对知识的巩固,更是对我们编程能力的提高和实践能力的锻炼。
单片机实验指导书——带答案

《单片机原理及应用》实验指导书姓名:学号:专业班级:所在学院:成人教育学院2012年5月日单片机实验指导书目录实验一系统认识实验 (2)实验二程序调试 (4)实验三外部中断实验 (6)实验四串口实验 (8)实验一系统认识实验一、实验目的1.掌握SICElab-G2200实验/仿真系统的结构与使用方法;2.熟悉单片机系统开发软件WAVE6000。
二、实验设备1.G2200/2100 实验平台 1 台 2.仿真器/ 仿真板 1 台3.连线若干根 4.计算机 1 台三、实验内容P1端口接发光二极管,加1点亮。
四、连线方案:实验箱内部已连好五、实验步骤1.连接Lab51CPU板。
(已由实验师连好)2.仿真器与实验平台的连接将Lab51板的DC34芯插座与G6W仿真器上的DC34插座用扁平电缆连接起来。
(已由实验师连好)3.仿真器与计算机的连接用随机配带的串口通讯电缆,将仿真器与计算机连接起来,串口1、串口2均可。
特别注意:在仿真器与计算机连接串口电缆时,两台机器必须都断电,否则易损坏计算机和仿真器。
4.实验连线按连线方案,用随机配带的实验连线插入孔后,轻轻转动一下锁紧插头,保证良好接触。
拆线时,应先回转一下,不要硬拨,以免损坏线路板。
不管是拆线还是插线,都应在断电的情况下进行。
实验中“连线方案”的粗线即为需用户动手接连的线。
5.检查接线是否有误,确信没有接错后,接上电源,打开电源开关。
6.在计算机上打开“WAVE6000集成调试环境”,界面如下图所示:7.建立新程序(如果程序已编好,直接跳到第9步)选择菜单[文件 | 新建文件]功能。
出现一个文件名为NONAME1的源程序窗口,在此窗口中输入以下程序ORG 0MOV P1,#0 ;熄灭发光二极管LOOP: INC P1CALL DelaySJMP LOOPDelay: MOV R2,#3 ;延时程序MOV R1,#0DLP: DJNZ R0,DLPDJNZ R1,DLPDJNZ R2,DLPRETEND8.保存程序选择菜单[文件 | 保存文件]或[文件 | 另存为 ]功能。
单片机原理与应用及c51程序设计答案

单片机原理与应用及c51程序设计答案【篇一:单片机原理与c51语言程序设计与基础教程_课后习题答案】p> 习题填空题1.一般而言,微型计算机包括、四个基本组成部分。
2.单片机是一块芯片上的微型计算机。
以地应用范畴。
3.atmel 公司生产的cmos型51系列单片机,具有代替rom作为程序存储器,4.单片机根据工作温度可分为、和三种。
民用级的温度范围是0℃一70℃,工业级是-40℃~85℃,军用级是-55℃-125℃(不同厂家的划分标推可能不同。
5.在单片机领域内,ice的含义是。
选择题1.单片机的工作电压一般为v?a 5vb 3vc 1vd 4v2.单片机作为微机的一种,它具有如下特点:a 具有优异的性能价格比b 集成度高、体积小、可靠性高c 控制功能强,开发应用方便d 低电压、低功耗。
3.民用级单片机的温度范围是:a -40℃~85℃b 0℃一70℃c -55℃-125℃d 0℃一50℃4.mcs-51系列单片机最多有a 3b 4c 5d 65.下列简写名称中不是单片机或单片机系统的是a mcub scmc iced cpu问答题1.单片机常用的应用领域有哪些?2.我们如何学习单片机这么技术?3.单片机从用途上可分成哪几类?分别由什么用处?填空题1.运算器、控制器、存储器、输入输出接口2.单片机嵌入式系统3. mcs-51flash rom4.民用级(商业级)工业级军用级5.在线仿真器选择题1、a2、abcd3、b 4、c5、d问答题1.单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:(1)在智能仪器仪表上的应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。
单片机课后重要习题答案

单片机课后重要习题答案单片机课后重要习题答案在学习单片机的过程中,课后习题是巩固知识、提高编程能力的重要环节。
下面是一些常见的单片机课后习题及其答案,供大家参考。
一、基础题1. 请用C语言编写一个程序,实现将一个整数的二进制表示输出到LED灯上。
答案:```c#include <reg52.h>void main(){int num = 10; // 待转换的整数int i;while (1){for (i = 0; i < 8; i++){P1 = num & (1 << i) ? 0xFF : 0x00; // 判断第i位是否为1,是则点亮LED灯delay(); // 延时函数}}```2. 请编写一个程序,实现将一个8位二进制数的奇偶校验位计算出来,并输出到P1口。
答案:```c#include <reg52.h>void main(){unsigned char num = 0b10011010; // 待计算的8位二进制数int count = 0;int i;for (i = 0; i < 8; i++){if (num & (1 << i)){count++;}}P1 = count % 2 ? 0xFF : 0x00; // 奇数个1则输出高电平,偶数个1则输出低电平}二、进阶题1. 请编写一个程序,实现一个简单的计算器功能,能够进行加、减、乘、除四则运算,并将结果输出到数码管上。
答案:```c#include <reg52.h>void main(){unsigned char num1 = 10; // 第一个操作数unsigned char num2 = 5; // 第二个操作数unsigned char operator = '+'; // 运算符,可修改为其他运算符unsigned char result;switch (operator){case '+':result = num1 + num2;break;case '-':result = num1 - num2;break;case '*':result = num1 * num2;break;case '/':result = num1 / num2;break;default:result = 0;break;}// 将结果输出到数码管上P1 = result;}```2. 请编写一个程序,实现一个简单的密码验证功能,用户输入密码后,若密码正确,则点亮一个LED灯,否则不点亮。
单片机课后答案及实验

INTS2: MOV @R0 , A
INC R0
RETI
ERROR: SETB 00H
RETI
END
;启动T1 ;设数据指针
;奇校验
;保存一个字符 ;报错程序
3. 以中断方式设计单片微机的秒、分发生 器。假定P1.0每秒产生一个机器周期的正脉 冲,P1.1实现每分钟产生一个机器周期的正 脉冲。加上必要的伪指令和注释。假定晶 振频率为12MHZ。
(1)若不能正常通讯,可能原因是:右下方的串行通讯波特率 (9600)开关选择错误;或串口连接导线松动。
(2)若程序确定无误,而发光二极管显示不正常,可能是导线短 路,请更换或叠加导线(个别不亮不影响观察结果,则无需更 换);若8个发光管全都不受控制,则可能是芯片损坏,请联 系老师更换。
(3)在输入指令过程中,要注意指令的完整性,不要遗漏“#”、 “END”,区别数字“0”与字母“o”、“O”,
DEL: JBC TF0,REP AJMP DEL
REP: CLR P1.2 DJNZ R0,DEL AJMP L1 END
3. 设MCS-51单片机的晶振频率为6MHZ,以计数器 T0进行外部事件计数,每计数1000个外部事件输 入脉冲后,计数器T1开始2ms定时,定时时间到后, T0又开始计数,如此周而复始地工作。
2. 像仿真器一样,我们可以在实验装置上进行软、 硬件调试,观察控制硬件的执行结果或每条指令 的执行结果;
3. 应该养成自己动手的习惯,只有多动手才有可能 深入掌握软、硬件知识;
4. 刚开始接触肯定会有很多问题,应该学会自己分 析问题,解决问题,不要急于问老师;
5. 做实验前要认真准备,编好源程序,有效利用紧 张的实验时间。
习题讲解
单片机实验指导书——带答案

实验指导书姓名:学号:专业班级:所在学院:成人教育学院2012 年5 月日目录系统认识实验 错误 ! 程序调试 错误 ! 外部中断实验错误!实验一 实..................系统认识实验1.掌握SICElab-G2200 实验/仿真系统的结构与使用方法;2.熟悉单片机系统开发软件WAVE600。
01 .G2200/2100 实验平台 1 台2 .仿真器/ 仿真板 1 台3.连线若干根 4 .计算机 1 台P1 端口接发光二极管,加 1 点亮。
实验箱1.连接L ab51CPU板。
(已由实验师连好)2.仿真器与实验平台的连接将Lab51 板的DC34芯插座与G6W仿真器上的DC34插座用扁平电缆连接起来。
(已由实3.仿真器与计算机的连接用随机配带的串口通讯电缆,将仿真器与计算机连接起来,串口1、串口2 均可。
特别注意:在仿真器与计算机连接串口电缆时,两台机器必须都断电,否4.实验连线按连线方案, 用随机配带的实验连线插入孔后, 轻轻转动一下锁紧插头, 保证良好接触。
拆线时,应先回转一下 ,不要硬拨, 以免损坏线路板。
不管是拆线还是插线,都应 在断电的情况下进行。
实验中“连线方案”的粗线即为需用户动手接连的线。
5.检查接线是否有误,确信没有接错后,接上电源,打开电源开关。
6.在计算机上打开“WAVE6000集成调试环境” ,界面如下图所示:7.建立新程序(如果程序已编好,直接跳到第 9 步)NONAME 的源程序窗口,在此窗口中输入以下程序1ORG新建项目会自动分三步走。
(1) 加入模块文件。
在加入模块文件的对话框中选择刚才保存的文件,按打开键。
如果 你是多模块项目,可以同时选择多个文件再打开。
(2) 加入包含文件。
在加入包含文件对话框中,选择所要加入的包含文件(可多选) 。
如选择菜单 [ 文件 | 新建文件 ] 功能。
出现一个文件名为 MOVP1,#0 ; 熄灭发光二极管 LOOP: INCP1 CALL Delay SJMPLOOPDelay: MOVR2,#3 ; 延时程序 DLP:MOV MOVDJNZ DJNZDJNZ R1,#0 R0,#0 R0,DLP R1,DLP R2,DLPRET END8.保存程序选择菜单 [ 文件 保存文件 ] 或 [ 文件 | 另存为 ] 功能。
51单片机课后习题答案

51单片机课后习题答案51单片机是一种非常常见的单片机型号,广泛应用于各种电子设备中。
学习51单片机的过程中,课后习题是不可或缺的一部分,通过解答习题可以巩固所学知识,提高编程能力。
本文将为大家提供一些常见的51单片机课后习题的答案,希望对大家的学习有所帮助。
1. 请编写一个程序,实现LED灯的闪烁功能。
答案:以下是一个简单的实现LED灯闪烁的程序:```c#include <reg51.h>sbit LED = P1^0; // 将P1.0引脚定义为LED灯void delay(unsigned int t) // 延时函数{unsigned int i, j;for(i = t; i > 0; i--)for(j = 110; j > 0; j--);}void main(){while(1){LED = 0; // 点亮LED灯delay(1000); // 延时1秒LED = 1; // 熄灭LED灯delay(1000); // 延时1秒}}```2. 请编写一个程序,实现通过按键控制LED灯的亮灭。
答案:以下是一个简单的实现通过按键控制LED灯亮灭的程序:```c#include <reg51.h>sbit LED = P1^0; // 将P1.0引脚定义为LED灯sbit Button = P2^0; // 将P2.0引脚定义为按键void delay(unsigned int t) // 延时函数{unsigned int i, j;for(i = t; i > 0; i--)for(j = 110; j > 0; j--);}void main(){while(1){if(Button == 0) // 检测按键是否按下{LED = ~LED; // 反转LED灯状态delay(200); // 延时200毫秒,避免按键抖动}}}```3. 请编写一个程序,实现通过数码管显示数字0-9的功能。
单片机实验答案

实验一熟悉键盘操作及数传指令编程设计1.内部RAM数据传送1)寄存器寻址与立即寻址,需要查看的数据有A、PSW和不同寄存器区的Rn等单元的内容步数A变化PSW变化RN变化PC原值变值原值变值原值变值原值变值ORG 0000HMOV PSW,#00HMOV R0,#30H 00(RO) 30 0 3MOV A,R0 00 30 3 5MOV R6,A 00(R6) 30 5 6MOV PSW,#14H 00 14 30(R6、R0) 00 6 7 MOV R0,#30H 00(R0) 30 7 000A MOV A,R0 000A 000C MOV R6,A 00(R6) 30 000C 000D MOV PSW,#10H 14 10 000D 000E MOV R0,#30H 000E 11 MOV A,R0 11 13 MOV R6,A 13 14 MOV PSW,#08H 10 08 30(R0、R6) 00 14 15 MOV R0,#30H 00(RO) 30 15 18 MOV A,R0 18 001A MOV R6,A 00(R6) 30 001A 001B SJMP $ 001B 001C END `2) 直接寻址,需查看30H、31H、32H、40H、ACC、PSW等单元的内容。
步数30H 31H 32H 40H ACC PSW PC原值变值原值变值原值变值原值变值原值变值原值变值原值变值ORG 0100H 0 0 0 00X00X0MOV30H,#45H 0 0 0 00X00X00 ·MOV31H,#46H 0450 0 00X00X00000103MOV 02H,31H 45460 00X00X00 `0106MOV0E0H,30H 45460 00X00X001060109MOV 32H,ACC 45460 00X00X450X00X010109010CMOV ACC,PSW 4546450X450X01010C010FMOV 40H,ACC 454645 00X450X450X01010F0112SJMP $ 4546450X450X450X0101120115END3)寄存器间接寻址,需查看@R0、RO等的内容@RO RO PC原值变值原值变值原值变值 ORG 0200H 0 0X00MOV 30H,#66H 0 66 0X00MOV R0,#30H 66 0X00 0200 0203 MOV @R0,#30H 66 30 0X00 0X30 0203 0205SJMP $ 30 0X300205 0207END 30 0X302.外部数据传送需要查看的数据有外部数据存储器单元2000H,外部程序存储器单元2001H。
单片机程序设计题库及答案

单片机程序设计题库及答案2.查表法求 Y=某 2。
设某(0≤某≤15)在片内 RAM 的 20H 单元中,要求查表求 Y,存入片内 RAM21H 单元。
1)ORG1000H3.分析下面程序MOVR0,#0C8H;(R0) =200CLRP1.7;P1.7 为低电平LOOP:CPLP1.7;P1.7 变反(1μ) NOP;(1μ) NOP;(1μ)DJNZR0,LOOP;(R0)≠0 则转(2μ)4.设计一个延时 10m 的延时子程序,已知单片机使用的晶振为 6MHZ。
机器周期数 ORG0020H1MOVR0,#0AH;外循环 10 次 1DL2:MOVR1,#MT;内循环 MT 次 1DL1:NOP 1NOP;空操作指令2DJNZR1,DL12DJNZR0,DL2RET内循环 DL1 到指令 DJNZR1,DL1 的计算:(1+1+2)ⅹ2μⅹMT=1000μMT=125=7DH 总的延时时间: {1+[1+(1+1+2)ⅹ125+2]ⅹ10}ⅹ2μ=10.062m5.试计算延时程序的执行时间DELAY:MOVR6,#64H (=100) 1I1:MOVR7,#0FFH (=255) 1I2:DJNZR7,I22DJNZR6,I12RET2 延时时间计算:(设时钟 fOSC=12MHz)T=1u计算延时程序的执行时间(设时钟 fOSC=6MHz,T=2u) 7.十六进制数转换为 ASCII 码:HASC:CJNEA,#0AH,NN:JNCN1 (C=0 跳 N1) ADDA,#30HSJMPSEN1:ADDA,#37HSE:RET8.设从片内 RAM30H 单元和40H 单元有两个 16 字节数,把它们相加,结果放于 30H 单元开始的位置处(设结果不溢出)。
ORG1000HMOVR0,#30HMOVR1,#40HMOVR2,#16CLRC9.按下面公式编写程序,某为无符号数,存在 20h 单元 y 存放在 21h 单元MOVB,#2MULABAJMPNE 某 T2NE 某 T1:CPLANE 某 T2:MOV21H,AEND从内部 RAM22h 单元开始存有一个无符号数数据块,长度 n 存于 21h 中。
单片机教学实验内容答案

1.数据传送实验要求:将片从30H开场连续7个单元的容送入从40H开场的地址单元中。
〔先在30H~36H中送初值〕*include<reg52.h>void main(){unsigned char data i,*d1,*d2;d1=0*30;d2=0*40;{*d1=0*10;*(d1+1)=0*11;*(d1+2)=0*22;*(d1+3)=0*45;*(d1+4)=0*30;*(d1+5)=0*32;*(d1+6)=0*21;}for(i=0;i<7;i++){*(d2+i)=*(d1+i);}}2.排序实验要求:将片从30H单元开场的10个无符号数,按由小到大的顺序排列。
〔先在30H~39H中送排序初值〕*include<reg52.h>void main(){unsigned char data *p,i,j,d;p=0*30;*(p+0)=0*21;*(p+1)=0*11;*(p+2)=0*31;*(p+3)=0*02;*(p+4)=0*22;*(p+5)=0*42;*(p+6)=0*32;*(p+7)=0*41;*(p+8)=0*05;*(p+9)=0*22;for(i=0;i<9;i++)for(j=0;j<9-i;j++)if(*(p+j)>*(p+j+1)){d=*(p+j);*(p+j)=*(p+j+1); *(p+j+1)=d ;}}3.并行接口实验要求:使用P1口控制LED1~LED8进展把戏显示。
显示顺序规律为:〔1〕8个LED依次左移单个点亮。
〔2〕8个LED依次左移逐个点亮。
〔3〕8个LED依次左移逐个熄灭,然后再从〔1〕进展循环,中间延迟时间1s。
*include<reg51.h>*define uchar unsigned char //在程序中用uchar替代unsigned char//目的在于减少代码输入量*define uint unsigned intvoid delay(uint); //定义延时函数void LeftMovLED(void); //定义向左移运点亮LED的函数//*******主函数********void main(void){while(1) //死循环{LeftMovLED(); //调用LeftMovLED实现左移点亮LED功能}}void LeftMovLED(void){uchar i,temp; //定义两个变量temp=0*01; //temp赋初值for(i=0;i<8;i++) //下面的代码循环8次{P1=temp; //将temp的值赋给PORTD点亮LED temp=temp<<1&0*fe; //将temp左移一位后将最后一位清零。
51单片机微机处理作业+实验+及参考答案

第一章基础知识 (1)第二章单片机 (1)第三章开发工具 (1)第四章指令与编程 (1)第五章 I/O端口 (5)第六章中断 (6)实验2-1:按键控制流水灯移动 (7)实验2-2:按键控制递减运算 (7)第七章定时/计数器 (8)第一章基础知识1 简述微机模型(组成);2 简述自己的PC机(和手机)性能指标;3 教材P23:第3、4、9题。
第二章单片机1 用指令将程序存储器中地址为200H单元的内容读取到累加器A;2 上题中,如何控制从片内200H单元读取,还是片外200H单元读取?3 说明片内RAM划分,及各部分容量及编址;4 将片内数据存储器中地址为30H单元的内容读取到累加器A;5 将片外数据存储器中地址为3000H单元的内容读取到累加器A;6 将累加器A的内容保存到片内数据存储器的40H地址单元。
7 堆栈工作原则?8 教材P52,8和12。
第三章开发工具1 完成教材中的例子,熟悉操作流程,并简单说明完成情况(遇到的问题,未完成的原因)和对课程教学的意见,然后上传。
不要传源程序和设计图。
截至日期:已过期。
第四章指令与编程1 教材P102:4-1;2 单片机的指令按功能如何分类?3 单片机内部RAM的40H单元中保存了一个数,范围是0-9。
用查表的方法将其转换为对应的ASCII码,并保存在片内50H单元中。
提示:ASCII编码规则:大写字母从41H开始依次排列,小写从61H开始,数字0-9从30H-39H。
也可用’’的方式表示字母和数字编码,如’W’表示W的ASCII编码,’8’表示8的编码,等等。
4 用加法运算的方法完成第3题。
5 拆字程序。
压缩的BCD码保存在20H单元,编程将其分解为两个非压缩的BCD码,低位放在50H单元,高位放在51H单元。
6 教材4-3;7 检查ROM地址为400H单元的内容,如为’W’,则将’Y’送到累加器A,否则送’N’;8 教材4-13(要求用循环调用子程序的方法完成,子程序实现查表转换)。
第二次单片机实验报告答案

DEL2: PUSH 02H ;SP=SP+1,(SP)=(02H)
DEL3: PUSH 02H ;SP=SP+1,(SP)=(02H)
DEL4: DJNZ R2,DEL4 ;R2-1不等于0,跳到DEL4
POP 02H ;02H<-((SP))弹出
DJNZ 20H,PO18 ;(20H)-1不等于0跳转到P018
CLR P1.7 ;P1.7清0
ACALL PO1A ;延时子程序A
JNB P3.3,PO17 ;如果P3.3等于0程序跳转到P017标志
MOV R2,B ;恢复R2的内容
MOV PSW,#00H ;程序状态字,当前工作寄存器为0组
MOV SP,#53H ;SP=53H,堆栈指针指向片内RAM的53H单元(第一个入栈内容将写入54H单元)
PO12:MOV P1,#7EH ;P1=7EH,即0111 1110,2个LED灯被点亮
ACALL PO1B ;延时子程序B
ORL P3,#00H ;按位或 P3|=00H
PO11:JNB P3.4,PO11 ;如果P3.4等于0程序跳转到P011标志
ORL IE,#84H ;中断允许寄存器 IE=1000 0100 即EA=1,EX1=1,总中断和打开外部中断1
ORL IP,#04H ;中断优先寄存器 IP=0000 0100 即PX1=1,外部中断1定义为高优先级中断
LJMP PO10 ;无条件转移到标志P010
ORG 0013H ;外部中断1(P3.3)
单片机实验答案

30.置1键6个数码管轮流亮1,置2键六个数码管轮流亮2,依次类推ORG 0000HDLED:MOV R0,#01MOV A,#01MOV B,ASTA2:SETB CASP:MOV P0,#0FFHMOV A,P0ASP1:RRC AJNC NEXTINC R0CJNE R0,#9,ASP1SJMP DLEDNEXT:MOV A,BMOV P1,AMOV DPTR,#TAB0MOV A,R0MOVC A,@A+DPTRMOV P2,AMOV R3,#0LOP:MOV R4,#0LOP1:NOPNOPDJNZ R4,LOP1DJNZ R3,LOPMOV A,BRL AMOV B,ACJNE A,#40H,NEXTSJMP DLEDTAB0:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H END 31.每两个管一组交替亮8ORG 0000HMOV P2,#78HQWE:MOV A,#03HMOV P1,AASD:MOV R3,#0LOOP:MOV R4,#0LOOP1:NOPNOPDJNZ R4,LOOP1DJNZ R3,LOOPRL ARL ACJNE A,#0C0H,ZXCSJMP QWEZXC:MOV P1,ASJMP ASD32.对第四个数码管按照一段亮--二段亮---...全亮--灭一段--灭两段--...--全灭,如此反复。
ORG 0000HMOV DPTR,#TABMOV P1,#08HMOV A,#01HFTP:MOV R0,#01HASD:MOV A,R0MOVC A,@A+DPTRMOV P2,ALCALL LOPINC R0CJNE R0,#08H,ASDMOV R0,#06HQWE:MOV A,R0MOVC A,@A+DPTRMOV P2,ALCALL LOPDEC R0CJNE R0,#0FFH,QWESJMP FTPLOP:MOV R3,#0LOOP:MOV R4,#0DJNZ R4,$DJNZ R3,LOOPRETTAB:DB 00H,01H,03H,07H,0FH,1FH,3FH,7FH33.测试K0,K0向上拨时,六个数码管同时亮8,K0向下时,六个数码管依次灭ORG 0000HMOV P2,#7FHMOV P1,#00HMOV R0,#00HASD:MOV P0,#0FFHMOV A,P0JNB ACC.0,LEDSJMP MIELED:MOV P1,#3FHMOV R0,#00HSJMP ASDMIE:CJNE R0,#00H,ASDMOV P1,#1FHLCALL LOOPMOV P1,#0FHLCALL LOOPMOV P1,#07HLCALL LOOPMOV P1,#03HLCALL LOOPMOV P1,#01HLCALL LOOPMOV P1,#00HMOV R1,#01HSJMP ASDLOOP:MOV R3,#0LOP:MOV R4,#0DJNZ R4,$DJNZ R3,LOPRET 34.将K1-K6的置位情况显示在对应数码管上,开关ON的显示0,开关OFF的显示1.ORG 0000HMOV P2,#06HMOV DPTR,#TABAMD:MOV R1,#01HMOV P0,#0FFHMOV A,P0MOV R0,AASD:ANL A,R1MOV P1,R1MOVC A,@A+DPTRMOV P2,AMOV A,R1RL AMOV R1,AMOV A,R0CJNE R1,#40H,ASDSJMP AMDTAB:DB 3FH,06HEND621.第六个数码管亮H,中断一次,H左移一位。
单片机C51程序设计课后习题答案(复习专用)

单⽚机C51程序设计课后习题答案(复习专⽤)第⼀章1. 给出下列有符号数的原码、反码和补码(假设计算机字长为8位)。
+45 -89 -6 +112答:【+45】原=00101101,【+45】反=00101101,【+45】补=00101101【-89】原=11011001,【-89】反=10100110,【-89】补=10100111【-6】原=10000110,【-6】反=11111001,【-6】补=11111010【+112】原=01110000,【+45】反=01110000,【+45】补=01110000 2. 指明下列字符在计算机内部的表⽰形式。
AsENdfJFmdsv120答:41H 73H 45H 4EH 64H 66H 4AH 46H 6DH 64H 73H 76H 31H 32H 30H3. 什么是单⽚机?答:单⽚机是把微型计算机中的微处理器、存储器、I/O接⼝、定时器/计数器、串⾏接⼝、中断系统等电路集成到⼀个集成电路芯⽚上形成的微型计算机。
因⽽被称为单⽚微型计算机,简称为单⽚机。
4. 单⽚机的主要特点是什么?答:主要特点如下:1) 在存储器结构上,单⽚机的存储器采⽤哈佛(Harvard)结构2) 在芯⽚引脚上,⼤部分采⽤分时复⽤技术3) 在内部资源访问上,采⽤特殊功能寄存器(SFR)的形式4) 在指令系统上,采⽤⾯向控制的指令系统5) 内部⼀般都集成⼀个全双⼯的串⾏接⼝6) 单⽚机有很强的外部扩展能⼒5. 指明单⽚机的主要应⽤领域。
答:单机应⽤:1) ⼯业⾃动化控制;2) 智能仪器仪表;3) 计算机外部设备和智能接⼝;4) 家⽤电器多机应⽤:功能弥散系统、并⾏多机处理系统和局部⽹络系统。
第⼆章1. MCS-51单⽚机由哪⼏个部分组成?答:MCS-51单⽚机主要由以下部分组成的:时钟电路、中央处理器(CPU)、存储器系统(RAM和ROM)、定时/计数器、并⾏接⼝、串⾏接⼝、中断系统及⼀些特殊功能寄存器(SFR)。
单片机课后答案及实验

3; P99;第18题
MOV MOV MOV MOV ANL ORL SWAP CPL XRL ORL
30H ; 0A4H A ; 0D6H R0 ; 30H R2 ; 47H A ; R2 A ; @R0 A A A ; 0FFH 30H ; A
;30H=A4H ;A=0D6H ;R0=30H ;R2=47H
DEL: JBC TF0;REP AJMP DEL
REP: CLR P1.2 DJNZ R0;DEL AJMP L1 END
3. 设MCS-51单片机的晶振频率为6MHZ;以计数器T0 进行外部事件计数;每计数1000个外部事件输入脉 冲后;计数器T1开始2ms定时;定时时间到后;T0又开 始计数;如此周而复始地工作&
解:要求定时时间为1s;若采用定时模式1;根 据公式:定时时间T=65536-初始值xTcy; 可知最大定时时间为65.536ms&若定时 10ms;则必须有100个10ms;即100次溢出中 断为1s;10ms时间常数为D8F0H&
ORG 0000H AJMP MAIN ORG 000BH AJMP INT_T0 ORG 0030H MAIN: MOV TMOD ; 01H MOV TL0 ; 0F0H MOV TH0 ; 0D8H SETB TR0 MOV R6 ; 00H
MOV DPTR;0300H
LOOP:CLR DPS
MOVX A;@DPTR
ANL A;0FH SWAP A XCH A;B
INC DPTR MOVX A;@DPTR ANL A;0FH ORL A;B INC DPTR SETB DPS MOVX @DPTR;A INC DPTR DJNZ R2;LOOP CLR DPS SJMP $
单片机 实验程序 答案

单片机实验5 1、将累加器A中的8位二进制转换成3位BCD码格式的十进制。 其中,百位数的BCD码放在21H单元中,十位和个位数放在22H 单元中。 参考程序: ORG 0000H LJMP MAIN ORG 1000H MAIN: MOV A, #0FFH MOV B, #64H DIV AB MOV 21H, A MOV A, #0AH XCH A, B DIV AB SWAP A ADD A, B MOV 22H, A L1: SJMP L1 END 实验步骤: (1)输入程序检查无错误,经汇编、连接后装入系统。 (2)在1012处设段点。 (3)GB=0000↙,运行程序。 (4)用R0721↙查看21H单元,应为02,用R0722查看22H 单元,应为55。 (5)改变A中的数,考察程序的正确。
单片机实验4 2、将内存单元20H中存放的两个BCD码拆开,求它们的乘积, 并把乘积以压缩的BCD码形式送回内存单元21H中。 参考程序: ORG 0000H LJMP MAIN ORG 1000H MAIN: MOV A,20H ;比如20H是一个十进制数67,注意是67不是67H ANL A,#0FH ;得到个位7 MOV B,A ;个位送B XCH A,20H ;再次取数67 SWAP A ;高低四位交换得到数76 ANL A,#0FH ;得到十位数6 MUL AB ;6*7=42(2AH) MOV B,#10 ;送被除数10 DIV AB ;得到A=4,B=2 SWAP A ;高低四位数交换,得到数A=40 ANL A,#0F0H ;将低4位清零,这句可以不要 ORL A,B ;得到BCD码42, MOV 21H,A ;将结果送给21H L1: SJMP L1 END
单片机实验1 2、将两个定时/计数器设定为方式1, 分别从P1.1和P1.2发出一个方波,用示波器测量其周期。 ORG 0000H LJMP MAIN ORG 000BH CPL P1.1 MOV TH0, #0F8H MOV TL0, #06H RETI ORG 001BH CPL P1.2 MOV TH1, #0F8H MOV TL1, #06H RETI ORG 1000H MAIN: MOV TH0, #0F8H MOV TL0, #06H MOV TH1, #0F8H MOV TL1, #06H MOV TMOD, #11H MOV TCON, #50H MOV IE, #8AH L1: SJMP L1 END
单片机课后习题答案(《单片机应用技术》C语言版)

单片机课后习题答案(《单片机应用技术》C语言版)单片机课后习题答案《单片机应用技术》C语言版1. 实验一:单片机概述与开发环境搭建题目一:简述单片机的概念及其优势。
答案:单片机是一种集成电路,具有微型化、低功耗、低成本等优势。
它可以独立完成各种任务,广泛应用于嵌入式系统中。
题目二:描述单片机开发环境的搭建步骤。
答案:单片机开发环境的搭建步骤如下:1) 安装C语言编译器;2) 安装单片机开发工具;3) 配置单片机开发环境;4) 创建工程并编写程序;5) 编译、下载并运行程序。
2. 实验二:基本IO口操作题目一:使用C语言编写程序,将P0口的四个引脚连接到四个LED灯,实现依次点亮、逐个点亮、全亮和全灭功能。
答案:代码如下:```c#include <reg52.h>#define uchar unsigned charvoid delay(uchar t) {while (t--);}void main() {P0 = 0xfe; // 1111 1110,点亮第一个LED delay(60000);P0 = 0xfd; // 1111 1101,点亮第二个LED delay(60000);P0 = 0xfb; // 1111 1011,点亮第三个LED delay(60000);P0 = 0xf7; // 1111 0111,点亮第四个LED delay(60000);P0 = 0xff; // 1111 1111,全亮delay(60000);P0 = 0x00; // 0000 0000,全灭while (1);}```题目二:编写程序,通过P1口的第0~3引脚接收外部开关信号,并通过P2口的0~3引脚控制LED灯的亮灭状态。
答案:代码如下:```c#include <reg52.h>#define uchar unsigned charvoid delay(uchar t) {while (t--);}void main() {uchar temp;while (1) {temp = P1 & 0x0f; // 获取P1口低4位的值P2 = ~temp; // 反转temp后赋值给P2口delay(60000);}}```3. 实验三:中断与定时器题目一:利用定时器0中断,编写程序实现一个1s的计时器,并在数码管上显示计时器的值。
单片机实验例题及答案

单片机实验考试题1、用Proteus打开“简易电子琴.DSN',按图编写程序,设计一个简易电子琴。
按数字键1〜7,分别发“斗”、“来”、“米”……音(频率见实验指导书),按键抬起则发音停止,不考虑高八度和低八度音,按下1〜7以外的其它键不发音。
2、用Proteus打开文件“计数器.DSN',当按下键盘上的0〜F十六个键时,能将键值以十六进制形式在四个数码管上滚动显示。
在LED上显示字符A〜F的形式分别为:代3、用Proteus打开文件“频率计.DSN',图中,在单片机的外部中断0脚接有一个脉冲信号源,编写程序实现一个频率计的功能,能够测定该脉冲信号源的频率。
程序调试时可以修改信号源的频率,比较测量值与设定值的差距,仿真时一般误差在10%内就算正常。
修改信号源频率的方法是,右击信号源图标后再左击,打开信号源的属性对话框,修改其中的频率(frequ ncy),不要改变其它属性值,频率可以在1Hz到10000Hz之间设定。
(提示:可以设置一个外部中断0的中断服务程序,每次中断时给某个变量加一;再设置一个定时器中断服务程序,用于计时。
每秒钟读一次脉冲数,并将其清零,然后将脉冲数显示在数码管上,每秒钟内的脉冲数就是频率。
)4、用Proteus打开文件“电子秒表.DSN',开机时显示00.00,单位是秒,精确到10毫秒,按“SW1 键启动或暂停,按“ SW2键时间清零。
提示:关于点亮小数点,每5mS刷新LED时,判断当刷新到第2个LED时将笔划代码中与小数点对应的位(bit7)清零。
5、用Proteus打开文件“播放音乐.DSN',按图设计一个开机就能播放<康定情歌〉的程序,并将其简谱在数码管上同步滚动显示。
此程序也可以下载到实验板上运行。
6用Proteus打开文件“流水灯.DSN',可以看到在单片机89C52的P2 口接有8个发光二极管。
编写流水灯的程序,使8个发光二极管每隔约0.5秒依次点亮(每次亮一个),要求开始时从左往右点亮,每按一次按钮SW1后,改变流水的方向。
单片机原理及其接口技术实验问答答案

实验一(无符号数加法实验)1 如果要实现2345+6789,程序应如何修改?2 如果去掉程序中的两句“DA A”指令,有何实验现象?原因是什么?3 如果将程序中的“ADDC”改为ADD”, 有何实验现象?为什么?4 如果将程序中的“ADD”改为“ADDC”,程序是否正确?为什么?解:1将程序中66改为23, 78改为45, 67改为67, 43改为892结果是十进制变为十六进制,原因是“DA A”指令是十进制调整指令。
3不能改为ADD,因为ADDC是带有进位CY的加法指令。
4 ADD一般情况下不能改为ADDC,因为缺少CY的进位,但是在本题中可以,因为不造成进位。
实验二闪烁灯控制1若将程序中的“SETB ”改为“CLR ”有何实验现象?答:将程序中的“SETB ”改为“CLR ”,指示灯不闪烁,因为SETB是置位指令,输出置1,CLR使输出置0,置1端口开启,置0时端口关闭,因此不闪烁。
2若将程序中的“JNB ,LOOP”改为“JB ,LOOP”有何实验现象?答:将程序中的“JNB ,LOOP”改为“JB ,LOOP”,会使闪光灯开关置0闪烁,因为闪光灯闪烁频率由RT控制。
3若要加快或减慢灯的闪烁频率,有何方法?为什么?答:若要加快频率可将MOV R7,#10H改为MOV R7,#5H,减慢频率可将MOV R7,#10H 改为MOV R7,#50H。
4若将改为与灯L7连接,有何实验现象?为什么?答:与L7连接,则L7灯就变成了闪烁灯。
因为当数据为1时,引脚上出现高电平,导致L7发光,反之,数据为0,引脚上出现低电平不发光。
5若将灯的开关控制由当前程序的控制改为由控制,应如何修改?答:若将控制改为由控制,可以酱SETB 改为SETB 将JNB 改为JNB ,$6若将当前的与灯连接改为连接,应该如何修改程序?答:若将当前与灯连接改为PL3灯连接,应将CPL 改为CPL 。
跑动灯控制1将程序中RL A改为RR A,有何实验现象?答:将程序中RL A改为RR A,会使向左移动的【跑动灯变为右移2将程序中MOV A,#88H改为MOV A,#77H,有何实验现象?答:若将MOV A,#88H改为MOV A,#77H,会使原先(88H的二进制数)变为01110111(77H的二进制数),会出现灭亮亮亮灭亮亮亮的实验现象。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机实验4 2、将内存单元20H中存放的两个BCD码拆开,求它们的乘积, 并把乘积以压缩的BCD码形式送回内存单元21H中。 参考程序: ORG 0000H LJMP MAIN ORG 1000H MAIN: MOV A,20H ;比如20H是一个十进制数67,注意是67不是67H ANL A,#0FH ;得到个位7 MOV B,A ;个位送B XCH A,20H ;再次取数67 SWAP A ;高低四位交换得到数76 ANL A,#0FH ;得到十位数6 MUL AB ;6*7=42(2AH) MOV B,#10 ;送被除数10 DIV AB ;得到A=4,B=2 SWAP A ;高低四位数交换,得到数A=40 ANL A,#0F0H ;将低4位清零,这句可以不要 ORL A,B ;得到BCD码42, MOV 21H,A ;将结果送给21H L1: SJMP L1 END
单片机实验2 1、将两个定时/计数器设定为方式0, 分别从P1.1和P1.2发出一个方波,用示波器测量其周期。 ORG 0000H LJMP MAIN ORG 000BH CPL P1.1 MOV TH0, #0F8H MOV TL0, #06H RETI ORG 001BH CPL P1.2 MOV TH1, #0F8H MOV TL1, #06H RETI ORG 1000H MAIN: MOV TH0, #0F8H MOV TL0, #06H MOV TH1, #0F8H MOV TL1, #06H MOV TMOD, #00H MOV TCON, #50H MOV IE, #8AH L1: SJMP L1 END
单片机实验6 布尔运算:编程实现X与Y异或运算,设A、B分别存放在00H、01H,结果Z存放在02H。 (注意00H、01H、02H是位地址,属于内部RAM 20H的D0、D1、D2) 操作前可用R命令给20H单元置入初始值,例如置入01H。实验程序如下: ORG 0000H LJMP MAIN ORG 1000H MAIN: MOV C, 00H ANL C, /01H MOV 02H,C MOV C, 00H CPL C ANL C, 01H ORL C, 02H MOV 02H,C L1: SJMP L1 END 实验步骤: (1)输入程序检查无错误,经汇编、连接后装入系统。 (2)在100FH处设断点,运行程序(GB=0000↙),在断点处检查结果。 (3)用R0720↙察看02H位中的内容,为01。 (4)按RESET键终止程序的运行,返回监控
单片机实验5 1、将累加器A中的8位二进制转换成3位BCD码格式的十进制。 其中,百位数的BCD码放在21H单元中,十位和个位数放在22H 单元中。 参考程序: ORG 0000H LJMP MAIN ORG 1000H MAIN: MOV A, #0FFH MOV B, #64H DIV AB MOV 21H, A MOV A, #0AH XCH A, B DIV AB SWAP A ADD A, B MOV 22H, A L1: SJMP L1 END 实验步骤: (1)输入程序检查无错误,经汇编、连接后装入系统。 (2)在1012处设段点。 (3)GB=0000↙,运行程序。 (4)用R0721↙查看21H单元,应为02,用R0722查看22H 单元,应为55。 (5)改变A中的数,考察程序的正确。
单片机实验1 2、将两个定时/计数器设定为方式1, 分别从P1.1和P1.2发出一个方波,用示波器测量其周期。 ORG 0000H LJMP MAIN ORG 000BH CPL P1.1 MOV TH0, #0F8H MOV TL0, #06H RETI ORG 001BH CPL P1.2 MOV TH1, #0F8H MOV TL1, #06H RETI ORG 1000H MAIN: MOV TH0, #0F8H MOV TL0, #06H MOV TH1, #0F8H MOV TL1, #06H MOV TMOD, #11H MOV TCON, #50H MOV IE, #8AH L1: SJMP L1 END
单片机实验3
该程序将内部RAM 70H到71H中的16个数据按小到大顺序重新排序。 实验程序如下: ORG 0000H LJMP MAIN ORG 1000H MAIN: MOV R2, #70H MOV R3, #71H L2: ACALL L1 INC R2 INC R3 CJNE R3, #80H,L2 L3: SJMP L3 NOP L1: MOV A, R2 MOV R0, A MOV A, R3 MOV R1, A MOV A, @R0 L5: CLR C SUBB A, @R1 MOV A, @R0 JC L4 XCH A, @R1 MOV @R0, A L4: INC R1 CJNE R1, #80H,L5 END