实验一系统认识及基本程序设计实验四、实验内容1. 将BCD 码整数0~255 存入片内RAM 的20H、21H、22H 中,然后转换为二进制整数00H~FFH,保存到寄存器R4 中。
修改20H、21H、22H 单元的内容,如:00H,05H,08H;观察实验结果。
参考程序:;==============================================================; 文件名称: Asm2-1.asm; 功能描述: BCD整数转换为二进制整数(8位, 范围从00H--FFH);==============================================================ORG 0000HLJMP MAINORG 0100HMAIN: MOV R0, #20H ;BCD存放高位地址MOV R7, #03H ;BCD码0--255, 最多3位CLR AMOV R4, ALP1: MOV A, R4MOV B, #0AHMUL AB ;乘10ADD A, @R0 ;加下一位的值INC R0 ;指向下一单元MOV R4, A ;结果存入R4DJNZ R7, LP1 ;转换未结束则继续SJMP MAIN ;设置断点, 观察实验结果R4中的内容END2. 将16 位二进制整数存入R3R4 寄存器中,转换为十进制整数,以组合BCD 形式存储在RAM 的20H、21H、22H 单元中。
参考程序:;=============================================================; 文件名称: Asm2-2.asm; 功能描述: 二进制整数(16位)转换为十进制整数(组合BCD);=============================================================; 0--FFFFH(R3R4)==>0--65535ORG 0000HLJMP MAINORG 0100HMAIN: MOV R0, #22H ;转换结果低位地址MOV A, R0PUSH ACC ;ACC表示累加器A的直接地址MOV R7, #03HCLR ALP1: MOV @R0, A ;结果存储地址清零DEC R0DJNZ R7, LP1POP ACCMOV R0, AMOV R7, #16LP2: PUSH ACCCLR CMOV A, R4 ;R4中为二进制数的低位RLC AMOV R4, AMOV A, R3 ;R3中为二进制数的高位RLC AMOV R3, AMOV B, #03HLP3: MOV A, @R0ADDC A, @R0 ;执行乘2操作DA A ;十进制调整MOV @R0, A ;结果保存DEC R0DJNZ B, LP3POP ACCMOV R0, ADJNZ R7, LP2LJMP MAIN ;设置断点观察结果, 可进行下一次转换END3. 通过查表的方法将16 进制数转换为ASCII 码;参考程序:;============================================================= ; 文件名称: Asm4-1.asm; 功能描述: 查表程序设计, 将十六进制数0~F通过查表的方法; 转换为ASCII码;=============================================================ORG 0000HLJMP MAINORG 0100HMAIN: MOV DPTR, #ASCTAB ;表格首地址送DPTRMOV A, R7 ;R7中为待转换的数ANL A, #0FH ;取低4位MOVC A, @A+DPTR ;查表MOV R5, A ;低4位转换结果送R1MOV A, R7ANL A, #0F0H ;取待转换数的高4位SWAP A ;高4位与低4位交换MOVC A, @A+DPTR ;查表MOV R6, A ;高4位转换结果送R2SJMP MAIN ;设置断点观察结果ASCTAB: DB 30H, 31H, 32H, 33H, 34HDB 35H, 36H, 37H, 38H, 39HDB 41H, 42H, 43H, 44H, 45H, 46HEND4. 通过查表的方法实现y=x2,其中x为0~9 的十进制数,以BCD码表示,结果仍以BCD 码形式输出。
参考程序:;==============================================================; 文件名称: Asm4-2.asm; 功能描述: 查表程序, 用程序实现Y=X*X, X为0到9的十进制数,; 用BCD码(00H到09H)表示, 将X的平方, 即Y也以BCD码; 的形式保存到R1中.;==============================================================ORG 0000HLJMP MAINORG 0100HMAIN: MOV DPTR, #SQR ;取表格首地址MOV A, R7 ;要计算的值MOVC A, @A+DPTR ;查表MOV R6, A ;结果保存SJMP MAINSQR: DB 00H, 01H, 04H, 09H, 16HDB 25H, 36H, 49H, 64H, 81HEND实验二片内I/O口及中断应用实验一、实验目的了解P1 口作为输入输出方式使用时,CPU 对P1 口的操作方式。
了解MCS-51 单片机的中断原理,掌握中断程序的设计方法。
二、实验设备PC机一台,TD-NMC+教学实验系统,连接线若干三、实验步骤⑴按实验内容要求完成硬件连线;⑵编写实验程序,经编译、链接无误后,启动调试功能;⑶观察实验现象,并分析原因;⑷按复位键退出调试状态。
四、实验内容1. 片内I/O口应用实验P1 口是8 位准双向口,每一位均可独立定义为输入输出。
编写实验程序,将P1 口的低4 位定义为输出,高4 位定义为输入,数字量从P1 口的高4 位输入,从P1 口的低4 位输出控制发光二极管的亮灭。
;============================================================; 文件名: DigitIO.ASM; 功能说明: 数字量输入输出实验, P1口高4位输入, 低4位输出;============================================================ORG 0000HLJMP STARTORG 0100HSTART: ORL P1, #0F0H ;P1口高四位为输入MOV A, P1 ;读P1口的值SWAP A ;A中高,低4位交换MOV P1, A ;输出到P1口SJMP STARTEND2. 片内中断系统实验⑴定时器中断单片机集成的定时器可以产生定时中断,利用定时器0 和定时器1,编写实验程序在P1.0及P1.1 引脚上输出方波信号,通过示波器观察实验现象并测量波形周期。
改变计数值,重新运行程序,反复验证程序功能。
参考程序:;================================================================; 文件名: INT1.ASM; 功能说明: 采用定时器的中断, 在P1.0与P1.1引脚上输出周期波形.;================================================================ORG 0000HLJMP STARTORG 000BHLJMP TIMER0ORG 001BHLJMP TIMER1ORG 0100HSTART: MOV P1, #0FFHMOV TH0, #0F8H ;初始化定时器0计数初值MOV TL0, #00HMOV TH1, #0F8H ;初始化定时器1计数初值MOV TL1, #00HMOV TMOD, #11H ;设置定时器工作模式为方式1MOV TCON, #50H ;启动定时器MOV IE, #8AH ;使能中断SJMP $TIMER0: CPL P1.0 ;定时器0中断服务程序, 对P1.0引脚取反MOV TH0, #0F8H ;重新装入计数初值MOV TL0, #00HRETI ;中断返回TIMER1: CPL P1.1 ;定时器1中断服务程序MOV TH1, #0F8HMOV TL1, #00HRETIEND⑵外部中断手动扩展外部中断INT0、INT1,当INT0 产生中断时,使LED8 亮8 灭闪烁4 次;当INT1 产生中断时,使LED 由右向左流水显示,一次亮两个,循环4 次。
先按KK1-,观察实验现象,然后按KK2-,观察实验现象。
51 单片机加入了中断系统,从而提高了CPU 对外部事件的处理能力和响应速度。
增强型单片机SST89E554RC 共有8 个中断源,即外部中断0(INT0)、定时器0(T0)、外部中断1(INT1)、定时器1(T1)、串行中断(TI 和RI)、定时器2(T2)、PCA 中断和Brown-out 中断。
参考程序:;======================================================================; 文件名: INT2.ASM; 功能说明: 外部中断INT0, INT1操作.; 外部中断0: 使发光二极管闪烁4次.; 外部中断1: 使发光二极管由右向左流水显示, 一次亮两个LED.;====================================================================== ORG 0000HLJMP STARTORG 0003HLJMP EINT0ORG 0013HLJMP EINT1START: MOV P1, #00HSETB IT0 ;定义外部中断0为边沿触发SETB EX0 ;使能外部中断0SETB IT1 ;定义外部中断1为边沿触发SETB EX1 ;使能外部中断1SETB EA ;使能总中断SJMP $EINT0: MOV R7, #04H ;外部中断0中断服务程序ELP0: MOV P1, #0FFHACALL DELAY ;调用延时程序MOV P1, #00HACALL DELAYDJNZ R7, ELP0RETIEINT1: MOV A, #03H ;外部中断1中断服务程序MOV R7, #10HILP1: MOV P1, ARL ARL AACALL DELAYDJNZ R7, ILP1RETIDELAY: MOV R6, #0FFH ;延时子程序DLP1: MOV R5, #0FFHDLP2: DJNZ R5, DLP2DJNZ R6, DLP1RETEND实验三定时器/计数器应用实验一、实验目的1.了解MCS-51 单片机定/计数器的工作原理与工作方式;2.掌握定时/计数器T0 和T1 在定时器和计数器两种方式下的编程;3.学习定时/计数器T2 的可编程时钟输出功能。