《实验参考程序(共10页).doc》由会员分享,可在线阅读,更多相关《实验参考程序(共10页).doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上实验一系统认识及基本程序设计实验一、实验目的 1. 学习Keil 集成开发环境的操作; 2. 熟悉TD-51 系统板的结构及使用,熟悉51指令系统; 3掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解;4学习查表程序的设计方法,进一步熟悉51 的指令系统。二、实验设备 PC机一台,TD-NMC+教学实验系统。三、实验步骤编写实验程序,经编译、链接无误后,启动调试功能;观察实验现象,并分析原因;按复位键退出调试状态。四、实验内容1. 将BCD 码整数0255 存入片内RAM 的20H、21H、22H 中,然后转换为二进制整数00HFFH,保存到寄存器R4
2、 中。修改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;转换未
3、结束则继续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,
4、 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 进制
5、数转换为ASCII 码; 参考程序:;=; 文件名称: Asm4-1.asm; 功能描述: 查表程序设计, 将十六进制数0F通过查表的方法; 转换为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位转换结果送R2SJ
6、MP MAIN;设置断点观察结果ASCTAB:DB 30H, 31H, 32H, 33H, 34HDB 35H, 36H, 37H, 38H, 39HDB 41H, 42H, 43H, 44H, 45H, 46HEND4. 通过查表的方法实现yx2,其中x为09 的十进制数,以BCD码表示,结果仍以BCD 码形式输出。 参考程序:;=; 文件名称: Asm4-2.asm; 功能描述: 查表程序, 用程序实现Y=X*X, X为0到9的十进制数,; 用BCD码(00H到09H)表示, 将X的平方, 即Y也以BCD码; 的形式保存到R1中.;=ORG 0000HLJMP MAINORG 0100HM
7、AIN: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+教学实验系统,连接线若干三、实验步骤按实验内容要求完成硬件连线;编写实验程序,经编译、链接无误后,启动调试
8、功能;观察实验现象,并分析原因;按复位键退出调试状态。 四、实验内容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,
9、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;
10、初始化定时器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,
11、当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:
12、 使发光二极管闪烁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
13、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实验三定时器/计数器应用实验程序:在P3.4引脚(T0)手动输入一频率信号,要求P3.4每发生一次负跳变时,P1.0输出一个25ms同步负脉冲,同时P1.1输出一个50ms的同步正脉冲。已知晶振频率为11.0592
14、 MHz,试编程实现。P3.425ms50ms50ms25msP1.0P1.1T0:计数,初值0FFFFH,方式1 定时25ms ,方式1fosc=11.0592MHz, 则定时25ms的计数初值为: 25000(11.0592/12)25000= 61A8H故有:TC =10000H61A8 = 09E58H ORG 0000HAJMP STARTORG 000BHAJMP T10ORG 001BHAJMP T11ORG 0100HSTART: SETB P1.0;置P1.0为高 CLR P1.1;置P1.1为低 MOV TH0,#0FFH;T0计数初值为1 MOV TL0,#0FFH MO
15、V TMOD,#B;T0计数,方式2,T1定时,方式1 SETB TR0;启动 SETB ET0;开T0中断 SETB ET1;开T1中断 SETB EA;开中断总控制开关 MOV R7,#00H;中断计数器置0L1: SJMPL1;等待中断T10: MOV TH1,#09EH;T1计数初值 MOV TL1,#058H SETB TR1;启动T1 SETB ET1;开T1中断 SETB P1.1;置P1.1为高 CLR P1.0;置P1.0为低 RETIT11: MOV TH1,#09EH;T1计数初值 MOV TL1,#058H SETB TR1;启动T1 SETB ET1;开T1中断 SE
16、TB P1.0;置P1.0为高 INC R7;中断计数器加1 CJNE R7,#02H,NEXT1;不等于2转NEXT1 CLR P1.1;置P1.1为低 CLR TR1;T1定时停止 MOV R7,#0;中断计数器置0 RETI;中断返回 NEXT1: SETB P1.1;置P1.1为高 RETI ;中断返回 End2. 将定时/计数器1 设定为计数器方式,每次计数到10 在P1.0 引脚上取反一次,硬件连接如图所示,按单次脉冲KK1,观察发光管D0 的状态,每10 次变化一次。参考程序:;=; 文件名称: COUNT.ASM; 功能描述: 利用计数器1, 在计数10次后对P1.0引脚取反一
17、次;=ORG 0000HAJMP START ORG 0100HSTART:MOV TMOD, #60H;设置定时器/计数器1为计数器方式, 且为方式2MOV TH1, #0F6H;装入计数初值MOV TL1, #0F6HSETB TR1;启动计数MLP1:JNB TF1, MLP1;判溢出标志CPL P1.0;取反P1.0CLR TF1;清溢出标志AJMP MLP1END实验四 直流电机调速改变占空比,改变直流电机转速。T_value EQU 80H; T周期值T1_value EQU 60H; T周期中高电平周期T1值TH0_value EQU 0FEh; 定时器T0计数值(高)TL0_v
18、alue EQU 00H; 定时器T0计数值(低)ORG 0000H LJMP MAIN ORG 000BH LJMP TT0 ORG 1000HMAIN:CLR P1.7MOV R0, #T1_value MOV TMOD, #01H; 初始化T0 MOV TL0, #TL0_value MOV TH0, #TH0_value SETB TR0 SETB ET0 SETB EAMOV R1, #T1_valueL1: CJNE R0, #00H, L2 CPL P1.7 MOV A, #T_value SUBB A, R1 MOV R1, A MOV R0, AL2: AJMP L1TT0: MOV TL0, #TL0_value MOV TH0, #TH0_value DEC R0 RETIEND如果学生做得快,就增加实验五(在PPT中)专心-专注-专业