单片机PC是里PCTL什么意思

MC68HC908GP32 单片机_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
MC68HC908GP32 单片机
&&MC68HC908GP32 单片机器件手册
阅读已结束,下载本文需要
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩18页未读,
定制HR最喜欢的简历
你可能喜欢您现在的位置: >> 单片机流水灯实验报告 >> 单片机实验报告答案
单片机实验报告答案
来源: 时间:
【单片机实验报告答案】单片机应用技术 实验报告指导:王宏波 姓 名小组成员: 1.延时实验一、实验题目 (1)设fosc=6MHz,通过多级嵌套循环实现0.5S延时。(2) 通过调整晶振频率fosc, 在上述延时程序的基础上实现延时0.25S循环点亮 Pl.0口的LED。二、实验目的 (1)掌握8051汇编指令格式。(2)掌握延时时间的计算方法。(3)掌握Keil软件中延时时间的观察方法。(4)掌握循环结构程序的设计方法。(5)掌握汇编起始指令ORG、汇编结束指令END、位操作指令的使用方法。(6)掌握8051驱动LED的方法。(7)掌握示波器、直流电流表、直流电压表的使用方法。三、实验元件 (1)AT89C51。(2) AT89C51、 POT-HG、 LED、 AMMETER、 VOLTMETER、 DC DC OSCILLOSCOPE。四、硬件设计六、汇编程序 (1)0.5S 延时程序 ORG0000H ;指令起始地址 0000H;延时子程序,延时机器周期数 1+10+500+500+(248*50*10+500+10+1)*2=250033 DELAYLP1LP2MOV R4,#10 MOV R5,#50 MOV R6,#248 NOP;50*10T1T10T50*10Tms LP3:DJNZR6,LP3 DJNZR5,LP2 DJNZR4,LP1 RET;1Tms END;248*50*10T50*10T10Tms(2)延时0.25S循环点亮 Pl.0 口的 LED ;fosc=12 MHz ORG 0000H LOOPCLR P1.0 LCALL DELAY SETB P1.0 LCALL DELAY LJMP LOOP DELAYLP1LP2MOV R4,#10 MOV R5,#50 MOV R6,#248 NOP LP3DJNZ R6,LP3 DJNZ R5,LP2 DJNZ R4,LP1 RET END; 七、实验中遇到的问题及解决方法八、实验2 外部中断实验一、实验题目 (1)外部中断1通过上拉电阻接按钮控制P0口的输出。无中断发生时,P0.0口绿 色LED常亮,P0.1口红色LED常灭。按钮按下,外部中断1发生,熄灭绿色LED,点 亮红色LED,经延时后恢复绿色LED常亮、红色LED常灭状态。(2)外部中断0和外部中断1分别通过上拉电阻接按钮BUTTON1和BUTTON2控制 P1.0口LED的状态,按钮BUTTON1按下,点亮LED,按钮BUTTON2按下,熄灭LED。二、实验目的 (1)掌握中断系统的工作原理。(2)掌握中断向量的概念。(3)学习外部中断的基本使用方法。(4)学习中断处理程序的编写方法。(5)掌握规范的程序设计方法。三、实验元件 (1):AT89C51、LED-RED、RED-GREEN、BUTTON、RES。(2):AT89C51、LED-RED、BUTTON1、BUTTON2、RES。四、硬件设计1.实验(1)2.实验(2)五、程序流程图 (1)INT1 中断控制 LED ORG 0000H MAIN:SETB EA SETB EX1 CLR IT0GREEN:CLR P0.0 LJMP GREEN ORG 0013HEXT1_REDSETB P0.0 CLR P0.1 DLY2D1D2MOV R3,#5 MOV R4,#255 MOV R5,#255 DJNZ R5,$ DJNZ R4,D2 DJNZ R3,D1 SETB P0.1 RETI END (2)INT0、INT1 中断控制 LED ORG 0000H LJMP MAIN ORG 0003H LJMP INT_0 ORG 0013H LJMP INT_1 ORG 0030H MAINSETB EA SETB EX0 SETB EX1 SETB IT0 SETB IT1 SJMP $ INT_0CLR P1.0 RETI INT_1SETB P1.0 RETI END 七、实验中遇到的问题及解决方法八、实验总结3.定时器/计数器实验一、实验题目 (1)T0方式0、定时,以查询方式输出周期为2ms的方波,fosc=6MHz。(2)定时器/计数器T0工作于方式0,以中断方式在P1.0口输出周期为2ms 的方波,晶振频率fosc=6MHz。(3)T0方式3、定时,以中断方式使P1.0输出周期为400us、P1.1输出周期 为800us的方波,fosc=6MHz。(4)T0方式3、定时,以查询方式输出周期为300us、占空比为1/3的方波, fosc=12MHz。(5)T1方式2、计数P3.5引脚输入脉冲,每计数10次,对P1.0取反。二、实验目的 (1)学习51单片机定时/计数器的使用方法。(2)掌握查询方式下的程序的编写方法。(3)进一步掌握中断处理程序的编写方法。(4)进一步掌握示波器的使用方法。三、实验元件 80C51。四、硬件设计1.实验(1)、(2)、(4)硬件设计 2.实验(3) 3.实验(5)六、汇编程序 (1)T0 方式 0 定时 2ms 方波 查询方式 ORG 0000H LJMP MAIN ORG 0050H MAINMOV TH0,#0F0H MOV TL0,#0CH MOV TMOD,#00H SETB TR0 LP1JBC TF0,LP2 SJMP LP1 LP2MOV TH0,#0F0H MOV TL0,#0CH CPL P1.0 SJMP LP1 END (2)T0 方式 0 定时 2ms 方波 中断方式 ORG 0000H LJMP MAIN ORG 000BH LJMP T0INT ORG 0030H MAIN:MOV TH0,#0F0H MOV TL0,#0CH MOV TMOD,#00H SETB TR0 SETB ET0 SETB EA SJMP $T0INTMOV TH0,#0F0H MOV TL0,#0CH CPL P1.0 RETI END (3)T0 方式 3、定时,中断方式,P1.0 输出周期为 400us、P1.1 输出周期为 800us 的方波 ORG 0000H LJMP MAIN ORG 000BH LJMP PINT0 ORG 001BH LJMP PINT1 ORG 0030H MAINMOV TMOD,#03H MOV TH0,#38H MOV TL0,#9CH MOV TCON,#50H MOV IE,#9AH AJMP $ PINT0MOV TL0,#9CH CPL P1.0 RETI PINT1:MOV TH0,#38H CPL P1.1 RETI END(4)T0 方式 3 定时 300us 输出占空比 1/3 矩形波 查询方式 ORG 0000H LJMP MAIN ORG 0030H MAINLOADMOV TMOD,#03H MOV TH0,#38H MOV TL0,#9CH SETB P1.0 LCALL TL_DLY CLR P1.0 LCALL TH_DLY JMP LOAD TL_DLYSETB TR0 TL_CHKJNB TF0,TL_CHK CLR TR0 CLR TF0 RET TH_DLY:SETB TR1 TH_CHK:JNB TF1,TH_CHK CLR TR1 CLR TF1 RET END (5)T1 方式 2、计数 P3.5 引脚输入脉冲,每计数 10 次,对 P1.0 取反。ORG 0000H LJMP MAIN ORG 0030H MAINMOV TMOD,#60H MOV TH1,#0F5H MOV TL1,#0F5H SETB TR1 LOOPJBC TF1,REP SJMP LOOP REPCPL P1.0 SJMP LOOP END七、实验中遇到的问题及解决方法八、实验总结4.双机通信实验一、实验题目 (1)利用串行口进行双机通信,完成汇编程序设计,实现排队呼叫器功能,要 求(a)串行口工作方式1,波特率2400bps,T1工作方式2,SMOD=0,fosc = 11.0592MHz。(b)单片机U2首先向单片机U1发起通信请求,发送呼叫号99H。(c)单片机U1接收到呼叫号后,在P1口显示并确认,然后向单片机U2回送应答 号01H。(d)单片机U2接收到应答号后,在P1口显示并确认。(e)通信未建立,单片机U1数码管不显示按键数据。(f)通信建立,单片机U2向单片机U1传输按键数据,单片机U1用数码管显示接 收到的按键数据。二、实验目的 (1)掌握双机通信的方法。(2)掌握波特率的计算方法。(3)掌握T1作为波特率发生器时相关寄存器的使用技巧。三、实验元件 (1)80C51、74LS47、LED-YELLOW、LED-BLUE、DIPSWC_8、RESPACK_8、RES、 7SEG-COM-AN-GRN。四、硬件设计 五、程序流程图 (1)主机U1 六、汇编程序 (1)双机通信 排队呼叫器 ORG 0000H LJMP MAIN ORG 0030H MAINMOV SCON,#70H MOV TMOD,#20H MOV TL1,#0F4H MOV TH1,#0F4H SETB TR1 WAIT_DLAL:JBC RI,CHECK_99 JMP WAIT_DLAL CHECK_99MOV A,SBUF MOV P1,A CJNE A,#99H,WAIT_DLAL SEND_RESPONSE:MOV SBUF,#01H CHECK_01JBC TI,RCIV_NUM JMP CHECK_01 RCIV_NUM:JBC RI,DISPLAY JMP RCIV_NUM DISPLAYMOV A,SBUF MOV P0,A CALL DELAY JMP RCIV_NUM DELAYLP1LP2MOV R3,#5 MOV R4,#2 MOV R5,#248 DJNZ R5,$ DJNZ R4,LP2 DJNZ R3,LP1 RET END (2)从机U2ORG 0000H LJMP MAIN ORG 0030H MAINMOV SCON,#70H MOV TMOD,#20H MOV TL1,#0F4H MOV TH1,#0F4H SETB TR1 DLALMOV SBUF,#99HCHECK_99:JBC TI,WAIT_RSPS JMP CHECK_99 WAIT_RSPS:JBC RI,CHECK_01 JMP WAIT_RSPS CHECK_01MOV A,SBUF MOV P1,A CJNE A,#01H,DLAL SEND_NUM:MOV A,P2 MOV SBUF,A CHECK_SEND:JBC TI,FINISH JMP CHECK_SEND FINISHJMP SEND_NUM END 七、实验中遇到的问题及解决方法 八、实验总结5.单片机-计算机串口通信实验一、实验题目 (1)利用串口调试助手和虚拟串口工具完成单片机和计算机之间的收发通信实 验。要求串口调试助手发送数据至单片机,单片机接收数据并送P1口显示。(2)利用串口调试助手和虚拟串口工具完成单片机和计算机之间的收发通信实 验。要求单片机发送数据至计算机,计算机接收数据并在串口调试助手中显示。二、实验目的 (1)掌握波特率的计算方法并分析波特率装定误差。(2)掌握串口调试助手的使用方法。(3)掌握虚拟串口工具的使用方法。(4)掌握串行接口模型COMPIM的使用方法。三、实验元件 (1)80C51、COMPIM、LED。四、硬件设计 1. 单片机接收数据2.计算机接收数据五、程序流程图 六、汇编程序 (1)单片机接收源程序 ;采用查询方式由串口接收一个字节,并送 P1 口。fosc=11.0592MHz,波特率 9600bit/s ORG LJMP 0000H MAINORG 0030H MAINMOV TMOD,#20H MOV TH1,#0FDH MOV TL1,#0FDH MOV SCON,#50H MOV PCON,#00H SETB TR1 LOOPJNB RI,$ CLR RI MOV A,SBUF MOV P1,A JMP LOOP END (2)单片机发送源程序 ORG 0000H LJMP MAIN ORG 0030H MAINMOV TMOD,#20H MOV TL1,#0FDH MOV TH1,#0FDH MOV SCON,#60H SETB TR1 MOV PCON,#00H STARTMOV DPTR,#TAB MOV R0,#14 LOOPCLR A MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ CLR TI INC DPTR DJNZ R0,LOOP CALL DELAY SJMP START DELAYMOV R5,#100 LP1LP2LP3MOV R6,#100 MOV R7,#100 DJNZ R7,LP3 DJNZ R6,LP2 DJNZ R5,LP1 RET TABDB 1,2,3,0AAH,0BBH,0CCH,'a','b','c','Hello' END七、实验中遇到的问题及解决方法八、实验总结 6.独立按键实验一、实验题目 (1)按键KEY1~KEY7连在P1口上,要求按下任一按键,点亮P0口对应的LED,设 计基于查询方式的按键处理程序。(2)按键KEY1~KEY7连在P1口上,要求按下任一按键,点亮P0口对应的LED,设 计基于中断方式的按键处理程序。(3)P3.0~P3.3作为列线,P3.4~P3.7作为行线,构成4X4矩阵式键盘,按键编号 依次为0~F,编写程序,对按下的按键进行检测,并将按键编号送P0口数码管显 示。二、实验目的 (1)了解独立按键的工作原理。(2)掌握独立按键接口电路的设计方法。(3)掌握基于查询方式的键盘应用程序编程方法。(4)掌握基于中断方式的键盘应用程序编程方法。三、实验元件 (1)AT89C51、 7SEG-MPX4-CC-BLUE、74LS02、 74LS373、7404、 ADC0808、CAP、 CAP-ELEC、 CRYSTAL、POT-HG、PULLUP、RESPACK-8、RES。 (2)AT89C51、74LS595、7SEG-MPX8-CC-BLUE。(3) AT89C51、 7SEG-COM-CAT-GRN、 BUTTON、 CAP、 CAP-ELEC、 CRYSTAL、 MINRES1K、 RES、RESPACK-7。四、硬件设计 1.查询方式2.中断方式五、程序流程图 六、汇编程序 (1)独立按键查询方式 ORG 0000H LJMP MAIN ORG 0030H MAINMOV A,#0FFH MOV P1,A MOV A,P1 JNB ACC.0,KEY0 JNB ACC.1,KEY1 JNB ACC.2,KEY2 JNB ACC.3,KEY3 JNB ACC.4,KEY4 JNB ACC.5,KEY5 JNB ACC.6,KEY6 JNB ACC.7,KEY7 JMP MAIN KEY0CLR P0.0 JMP MAIN KEY1CLR P0.1 JMP MAIN KEY2:CLR P0.2 JMP MAINKEY3:CLR P0.3 JMP MAINKEY4:CLR P0.4 JMP MAINKEY5:CLR P0.5 JMP MAINKEY6:CLR P0.6 JMP MAINKEY7:CLR P0.7 JMP MAIN END(2)独立按键中断方式 ORG 0000H LJMP MAIN ORG 0003H LJMP INT ORG 0030H MAINSETB EA SETB EX0 SETB IT0 MOV A,#0FFH MOV P1,A SJMP $ INTMOV A,P1 JNB ACC.0,KEY0 JNB ACC.1,KEY1 JNB ACC.2,KEY2 JNB ACC.3,KEY3 JNB ACC.4,KEY4 JNB ACC.5,KEY5 JNB ACC.6,KEY6 JNB ACC.7,KEY7 JMP MAIN KEY0CLR P0.0 JMP INTEND KEY1CLR P0.1 JMP INTEND KEY2CLR P0.2 JMP INTEND KEY3CLR P0.3 JMP INTEND KEY4CLR P0.4 JMP INTEND KEY5CLR P0.5 JMP INTEND KEY6CLR P0.6 JMP INTEND KEY7CLR P0.7 JMP INTEND INTEND:RETI END 七、实验中遇到的问题及解决方法 八、实验总结7. 数码管实验-静态显示一、实验题目 (1)制作0-99手动计数器,P0口和P2口各接一个LED数码管,分别显示十位和个 位。P1.0引脚接一按钮,每按1次计数值加1,计数值&99时归0重新计数。二、实验目的 (1)掌握7LED数码管静态显示的原理。(2)掌握7段LED数码管静态显示的编程方法。三、实验元件 (1)AT89C51、74LS21、BUTTON、LED-YELLOW、RESPACK-8。四、硬件设计五、程序流程图 六、汇编程序 (1)LED 静态显示 0-99 计数器 ORG 0000H LJMP MAIN ORG 0030H MAINMOV DPTR,#TAB MOV R0,#00H MOV P0,#3FH MOV P2,#3FH ADD1INC R0 CJNE R0,#00,KEYDN MOV R0,#00H KEYDN:JB P1.0,$ LCALL DELAY JB P1.0,KEYDN DISPMOV A,R0 MOV B,#10 DIV AB MOVC A,@A+DPTR MOV P0,A MOV A,B MOVC A,@A+DPTR MOV P2,A JB P1.0,ADD1 LJMP DISP DELAY:MOV R5,#20 D1MOV R6,#250 DJNZ R6,$ DJNZ R5,D1 RET TABDB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH END 七、实验中遇到的问题及解决方法八、实验总结
【单片机实验报告答案】目录一、 实验一? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1 二、 实验二? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7 三、 实验三? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?11 四、 实验四? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?15 实验一定时/计数器验证实验一、 实验目的熟悉定时/计数器T0的特点,学会合理选择定时方式并能根据具体情况结合 软件的方式定时。二、 实验设备及器件IBM PC机 一台 PROTEUS 硬件仿真软件 Keil C51。三、 实验内容用AT89C51单片机的定时/计数器T0产生1s的定时时间,作为秒计数时间,当 1s产生时秒计数加1;秒计数到60时,自动从0开始。四、 实验要求要求采用Proteus软件实现上述实验。五、 实验步骤1. 打开Proteus ISIS编辑环境,按照表1-1所列的元件清单添加元件。元件名称 AT89C51 CAP CAP-ELEC CRYSTAL RES 7SEG-COM-CAT-GRN PULLUP 所属类 Microprocessor Capacitors Capacitors Miscellaneous Resistors Optoelectronics Modeling Primitives 表 1-1 元件清单 元件全部添加后,在Proteus ISIS的编辑区域中按图1-1所示的原理图连接 硬件电路。所属子类 8051 Family Generic Generic ―― Generic 7-Segment Displays Digital[Miscellaneous]1 图1-1 电路原理图 2. 根据参考程序绘出流程图,并辅以适当的说明。流程图如图1-2所示:2 开始 SECOND+1 单片机数码管初始化 是否等于60秒? 设置定时器0初始化 开中断 Y SECOND归零 N 是否有中断? Y 分离计数值十位个位 进入中断程序 N查表显示十位个位 送时间常数COUNT+1是否计够1 秒? N 中断返回Y图1-2 程序流程图 3. 打开Keilμ Vision4,新建Keil项目,选择AT89C51单片机作为CPU,将参考 程序导入到“Source Group 1”中。在“Options for Target”对话窗口中, 选中“Output”选项卡中的“Create HEX File”选项和“Debug”选项卡中 的“Use:Proteus VSM Simulator”选项。编译汇编源程序,改正程序中的 错误。4. 在Proteus ISIS中,选中AT89C51并单击鼠标左键,打开“Edit Component” 对话窗口,设置单片机晶振频率为12MHz,在此窗口中的“Program File” 栏中,选择先前用Keil生成的.HEX文件。在Proteus ISIS的菜单栏中选择 “File”→“Save Design”选项,保存设计,在Proteus ISIS的菜单栏中, 打开“Debug”下拉菜单,在菜单中选中“Use Remote Debug Monitor”选项,以支持与Keil的联合调试。5. 在Keil的菜单栏中选择“Debug”→“Start/Stop Debug Session“选项,3 或者直接单击工具栏中的“Debug”→“Start/Stop Debug Session”图标, 进入程序调试环境。按“F5”键,顺序运行程序。调出“Proteus ISIS”界 面可以看到7段数码管显示从0~59s的计数值,每个数值显示1s,如图1-3所 示。图 1-3 程序运行结果六、 实验程序SECOND EQU 30H COUNT EQU 31H ORG 00H LJMP START ORG 0BH LJMP INT_T0 STARTMOV SECOND,#00H MOV COUNT,#00H MOV DPTR,#TABLE CLR A MOV P0,A MOV P2,A MOV TMOD,#00H MOV TH0,#()/256 MOV TL0,#()MOD 256 SETB TR0 SETB ET0 SETB EA MOV IE,#82H LJMP $ INT_T0:MOV TH0,#()/256 MOV TL0,#()MOD 256 INC COUNT4 MOV A,COUNT CJNE A,#20,I2 MOV COUNT,#00H INC SECOND MOV A,SECOND CJNE A,#60,I1 MOV SECOND,#00H I1MOV A,SECOND MOV B,#10H DIV AB MOVC A,@A+DPTR MOV P0,A MOV A,B MOVC A,@A+DPTR MOV P2,A I2RETI TABLEDB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH END七、 思考题1. 罗列一下Proteus软件的能带给我们的好处,指出一点最能帮助你的地方。使用Proteus软件能使我们方便的搭建电路, 同时在没有元器件的情况下 进行便于仿真,方便我们在将程序写入单片机前确认运行是否正确,同时可 在器件之前即可开始开发产品,而不必等到器件采购完后搭建电路才进 行程序调试。2. 用Proteus界面中的播放键运行仿真与Keilμ Vision4的环境中联调运行它 们两者的区别在什么地方? 用Proteus界面中的播放键运行仿真仅可以观察运行结果, 即程序运行在 硬件表面上的表现。而联调的时候可以再Keil软件里查看各寄存器和存储器 的状况,即硬件的内部情况。3. Keil软件软件仿真与Proteus的仿真对比。使用Proteus仿真可从硬件的角度观察仿真结果, 使仿真结果更加形象直 观,使我们可从硬件运行状态清楚的判断运行结果是否正确。而在Keil环境 中则是从程序的角度通过观察程序中数据的变化来观察仿真结果,需要对程 序运行结果充分了解。八、 实验总结及相关问题通过本次实验了解了Ptoteus软件的使用方法,以及在掌握了Keil的使用 方法下,学会了Proteus与Keil软件联调的方法。在用Proteus中由于忽略了要在总线处放置网络标号导致联调失败,最后 通过观察发现数码管引脚电平无变化发现此问题,放置网络标号后运行仿真 时数码管引脚电平发生变化可是数码管却没有变亮,经过多次检查接线,未5 发现接线错误后,觉得可能是软件本身错误,故将总线及数码管周围硬件线 路重新绘制一遍后再次运行仿真及可得到图1-3的结果。6 实验二单片机 I/O 口控制实验一、 实验目的利用单片机的P1 口作IO 口,使同学学会利用P1 口作为输入和输出口。二、 实验设备及器件IBM PC 机 一台 DP-51PRO.NET 单片机仿真器、编程器、实验仪三合一综合 开发平台一台三、 实验内容1. 编写一段程序,用P1 口作为控制端口,使D1 区的LED 轮流亮。2. 编写一段程序, 用P1.0~P1.6 口控制LED, P1.7 控制LED 的亮和灭(P1.7 接按键,按下时LED 亮,不按时LED 灭) 。四、 实验要求学会使用单片机的P1 口作IO 口, 如果有时间同学也可以利用P3 口作IO 口来做 该实验。五、 实验步骤1. 用导线把A2 区的J61 接口与D1 区的J52 接口相连。原理如图2-1 所示。图2-1 实验二原理图 2. 先编写一个延时程序。延时程序见程序1子程序DELAY。3. 将LED 轮流亮的程序编写完整并使用TKStudy ICE 调试运行。LED轮流亮程序见程序1。调试运行结果:D1区LED轮流亮。4. 使用导线把A2 区的J61 接口的P1.0~P1.6 与D1 区的 J52 接口的 LED1~LED7 相连,另外A2 区J61 接口的P1.7 与D1 区的J53 的KEY1 相连。7 5. 编写P1.7 控制LED 的程序,并调试运行。(按下K1 看是否全亮)。P1.7 控制LED 的程序见程序2。调试运行结果:按下P1.7后D1区LED全灭。6. A2 区J61 接口的P1.7 与D1 区的J54 的SW1 相连。然后再使用 TKStudy ICE 运行程序,查看结果。P1.7 控制LED 的程序见程序2。调试运行结果:按下P1.7后D1区LED全亮。六、 实验参考程序程序 1ORG LJMP ORG MAINMOV CLR MAINLOOP:CALL RLC MOV SJMP DELAYMOV LOOPMOV DJNZ DJNZ DJNZ DJNZ RET END 程序 2ORG LJMP ORG MAINJB CLRLED:CLR CLR CLR CLR CLR CLR CLR SJMP SETLED:SETB SETB SETB 0000H MAIN 0100H A,#0FFH C DELAY A P1,A MAINLOOP R7,#0 R6,#0 R6,$ R6,$ R6,$ R7,LOOP000H MAIN 0100H P1.7,SETLED P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 MAIN P1.0 P1.1 P1.28 SETB SETB SETB SETB SJMP ENDP1.3 P1.4 P1.5 P1.6 MAIN七、 实验思考题1. 请同学思考一下,想出几个实现以上功能的编程方法。程序1可利用单片机的定时计数器通过选择定时计数器工作方式和预置 初值设定延时时间,通过定时计数器产生的中断在中断程序中对A进行移位 后输出至P1口。程序2可在判断P1.7高低电平后根据判断结果直接将#80H或#7F直接送P1 口而不必逐位进行位操作。2. 请同学再思考一下,第二个程序中如果使用KEY1作为外部中断控制LED的亮 和灭时,程序应如何修改。此时将KEY1接/INT0口, 在主程序中开启外部中断设置外部中断触发方式, 通过中断服务子程序控制LED亮灭。程序如下所示ORG 000H LJMP LJMP MAINSETB SETB MAIN ;中断服务程序 SETLED ET0 ;开外部中断 EA ORG 0003H MOV SP,#40H CLR IT0 ;设置为电平触发 CLRLED:CLR P1.0 CLR P1.1 CLR P1.2 CLR P1.3 CLR P1.4 CLR P1.5 CLR P1.6 SJMP SETLED:SETB SETB SETB SETB SETB SETB CLRLED P1.0 P1.1 P1.2 P1.3 P1.4 P1.59 SETB RETI ENDP1.6八、 实验总结及相关问题通过本次实验掌握了使用 TKStudy ICE 进行硬件仿真调试的方法,在设置 仿真器驱动程序声明时对 C:\Keil 目录下的 Tools.ini 文件添加描述时,由于添 加的路径错误导致无法进行硬件仿真调试, 修改为正确路径后方可在 DEBUG 窗口中的 Use 选项中找到对应的选项。使用 TKStudy ICE 进行硬件仿真调试相 比本学期的电子系统设计中用到的调试方法更快捷,使用更方便。与此同时,通过本次实验对单片机的 I/O 控制有了更深入的了接,同时 加深入对单片机 I/O 编程的理解。10 实验三串转并 I/O 口实验一、 实验目的熟悉并掌握串转并的I/O口扩展方法。二、 实验设备及器件IBM PC机 一台 DP-51PRO.NET单片机仿真器、编程器、实验仪三合 一综合开发平台 一台三、 实验内容1. 写程序, 通过单片机的P1口控制74HC164的串行输入端口, 实现串并转换。2. 验证串并转换数据的正确性。四、 实验要求熟悉串并转换芯片的工作原理,学会使用串并转换芯片扩展单片机的 I/O 口资源。表3-1 74HC164真值表五、 实验步骤1. 短接C5区JP10接口,将C5区J43接口与A2区J61接口的P10~P13对应相 连 (CLK对P10等等)。如图3-1所示。11 图3-1 实验三原理图 2. 运行编写好的软件程序,完成一次串并转换。实验程序见实验参考程序。2. 使用C2区的逻辑笔或D1区的J52接口(LED指示灯)测试并行输出数据 Q0~Q7数据的正确性。调试运行结果:通过观察LED的亮灭情况可判断完成一次串并转换,且转换 结果正确无误。六、 实验参考程序CLK DINA DINB CLR164 ORG LJMP ORG MAINMOV NOP CLR SETB CLR SETB MOV MOV SLCHGRLC MOV SETB NOP CLR NOP DJNZ SJMP $ END EQU P1.0 EQU P1.1 EQU P1.2 EQU P1.3 0000H MAIN 0100H SP,#60H CLK DINB CLR164 CLR164 A,#0FFH R4,#08H A DINA,C CLK CLK R4,SLCHG七、实验思考题12 参考图 3-2 电路图,尝试编写软件程序,实现 8 位 LED 流水灯的控制。图 3.2 实验原理图 可利用单片机的定时计数器通过选择定时计数器工作方式和预置初值设 定延时时间,通过定时计数器产生的中断在中断程序中对A进行移位。程序 如下所示CLK DINA DINB CLR164 ORG LJMP ORG LJMP MAINMOV NOP CLR SETB CLR SETB MOV MOV MOV MOV SETB SETB SETB SJMP SLCHGMOV MOV RLC MOV EQU P1.0 EQU P1.1 EQU P1.2 EQU P1.3 0000H MAIN 000BH SLCHG SP,#60H;定时器 0 中断服务程序CLK DINB CLR164 CLR164 A,#0FFH TMOD,#01H ;定时器 0 工作方式 1 TH0,#18H ;送 2ms 时间常数 TL0,#0FCH TR0 ;开中断 ET0 EA $ TH0,#18H TL0,#0FCH A DINA,C13 SETB CLK NOP CLR CLK RETI END八、 实验总结及相关问题由于具有之前实验的基础所以本实验基本没碰到什么问题,调试运行都 符合实验要求,通过本次实验对串并转化程序的编写有了一定了解,通过编 写流水灯程序加深了对单片机串并口的了解。14 实验四 一、实验目的继电器控制实验加深理解继电器的工作原理和特点,掌握利用单片机的IO口控制继电器 的一般方法。二、实验设备及器件IBM PC机 一台 DP-51PRO.NET单片机仿真器、编程器、实验仪三合 一综合开发平台 一台三、 实验内容1. 利用D1区的拨动开关和LED,学习继电器的工作原理和特点。2. 编写一段程序,用P1.0口控制继电器,继电器控制LED的亮和灭,(COM与 CLOSE连通时,一盏LED亮;不连通时该LED灭。COM与OPEN连通时, 另一盏LED亮,不通时该LED灭)。四、 实验要求学会继电器的使用和利用单片机的IO口控制继电器的方法。五、 实验步骤图4-1 继电器驱动控制电路图 1. 用短路帽短接JP7, 使用导线把D1区J54接口的SW1与C7区J9接口的KJ (任 意一根针)相连接。2. 使用导线把D1区J52接口的LED1、LED2与C7区J103接口的 OPEN1,CLOSE1分别相连,另外C7区J103接口的COM1接地(GND)。15 3. 接好线后,同学可以拨动D1区的SW1拨动开关,观察现象(拨到1时LED2 亮,拨到0时LED1亮),并得出结论。运行结果:拨到1时LED2亮,拨到0时LED1亮,说明每拨动一次开关改变 一次继电器的状态。4. 然后把C7 区J9 接口的KJ 改接到A2 区的J61 接口的P10。再编写一个程 序程序(参考实验二), 使P1.0 口延时一段时间后改变电平值,来控制继 电器的开关。实验程序见实验参考程序。调试运行结果:两个LED交替变亮,继电器状态不断改变。六、 实验参考程序ORG LJMP ORG MAINMOV LOOPMOV DJNZ DJNZ DJNZ DJNZ CPL SJMP END 0000H MAIN 0100H R7,#0 R6,#0 R6,$ R6,$ R6,$ R7,LOOP P1.0 MAIN七、 实验思考题1. 请同学思考一下,改由 OPEN2、COM2、CLOSE2 时本实验如何进行。同使用OPEN1、COM1和CLOSE1时连接方法类似,把D1区J52接口的LED1、 LED2与C7区J103接口的OPEN2,CLOSE2分别相连,另外C7区J103接口的COM2 接地(GND)即可。2. 请同学再思考一下,继电器的用途,并举例说明。继电器是一种电控制器件,是当输入量(激励量)的变化达到规定要求 时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控 制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的 一种“自动开关”。故在电路中起着自动调节、 保护、 转换电路等作用。按照其工作原理可有以下应用:电磁继电器固体继电器温度继电器舌簧 继电器时间继电器高频继电器极化继电器其他类型的继电器八、 实验总结及相关问题由于具有之前实验的基础所以本实验基本没碰到什么问题,调试运行都 符合实验要求,通过本次实验了解了继电器的控制方法。对继电器这一器件 有了一定了解。16
【单片机实验报告答案】第一部分软件实验实验一 1.实验程序INDEX EQU 20H SUM EQU 21H熟悉伟福模拟仿真软件的使用ORG 0000H START:MOV INDEX,#5 MOV A,#0 LOOPADD A,INDEX DJNZ INDEX,LOOP MOV SUM,A SJMP $ END 单步执行时 累加器 A 的内容变化00 05 09 0C 0E 0F 20H 单元的内容变化05 04 03 02 01 00 21H 单元的内容变化00 00 00 00 00 00 0F 全速执行时 累加器 A 的内容:0F 21H 单元的内容:0F 断点执行时 累加器 A 的内容变化00 20H 单元的内容变化05 04 03 02 01 思考题:将存储单元由内部存储单元 21H 改为外部存储单元 2100H 程序如下INDEX EQU 20H 05 09 0C 0EORG 0000H MOV DPTR,#2100H START:MOV INDEX,#5 MOV A,#0 LOOPADD A,INDEX DJNZ INDEX,LOOP MOVX @DPTR,A SJMP $ END实验二 简单编程实验 1.清零程序 (1)对一个单元清零 ORG 0000H CLR A MOV DPTR,#200AH MOVX @DPTR,A SJMP $ END 200AH 单元内容 执行前:FF 执行后:00思考题:能否用 MOVX @DPTR,#00H 或 MOVX 200AH,A? 不能,访问外部数据需要间接访问 对内部数据清零的方法? MOV direct,A 或 MOV direct,Rn 或 MOV direct1,direct2 MOV direct,#dataMOV direct,@Ri 或(2)将 RAM 某一数据块清零 程序如下ORG 0000H MOV DPTR,#2010H MOV R0,#11H CLR ALL:MOVX @DPTR,A INC DPTR DJNZ R0,LL SJMP $ END 执行前:H … 2020H 流程图FF FF FF 执行后:2010H 执行后:2011H … 执行后: 00开始DPTR R0 A(@DPTR) A DPTR DPTR+1 R0 R0-1否 R0=0? 是结束 思考题:如何对从 2010H 开始的 256 个存储单元清零 程序如下ORG 0000H MOV DPTR,#2010H CLR AMOV R1,#10H LL2MOV R0,#10H LL1:MOVX @DPTR,A INC DPTRDJNZ R0,LL1 DJNZ R1,LL2 SJMP $ END 2.屏蔽程序 执行前:2010H FF 执行后:2010H FF 2011H FF 执行后:2011H 0F 思考题:(1)如何对指定单元进行低 4 位屏蔽? 例如将 2010H―2020H 的低 4 位屏蔽,程序如下ORG 0000H MOV DPTR,#2010H MOV RO,#11H LOOP:MOVX A,@DPTR ANL A,#0FH MOVX @DPTR,A INC DPTR DJNZ R0,LOOP SJMP $ END (2)如何将指定位屏蔽? 答修改 A,将相应的位取 0 即可。3.位移程序 执行前2010H 0B 执行后:11H 2D 2011H 85思考题:如何对指定单元内容左移一位? 程序如下ORG 0000H MOV DPTR,#2010H MOVX A,@DPTR RL AINC DPTR MOVX @DPTR,A SJMP $ END 4.拆字程序 执行结果:执行前:H 2042H3A 执行后:2040H FF FF H3A 0A 03思考题:执行后,原始数据(2040H 的内容)有没有变化?为什么? 答:没有变化,因为程序在进行逻辑运算后都是把结果保存在另 外的存储单元中,没有覆盖原来的值。5.拼字程序 源程序执行结果执行前:H 2042H 58 执行后:D H 58 4A A8思考题:结果单元 2042H 中的高 4 位是哪个单元的低 4 位,如果 要将此单元的低 4 位放在结果单元的低 4 位上,结果单元的高 4 位放另一单元的低 4 位,请修改程序。答:结果单元 2040H 的高 4 位是 2041H 单元的低 4 位。修改后程序如下ORG MOV 0000H DPTR,#2041HMOVX A,@DPTR ANL A,#0FH MOV MOVR0,A DPTR,#2040HMOVX A,@DPTR SWAP A ANL ORL INC INC A,#0F0H A,R0 DPTR DPTRMOVX @DPTR,A SJMP $ END实验三1.分支程序 实验结果X(2100H) 24 0 83 83 Y(2101H) 29编程实验(一)19结果与设想相符。1. 程序流程图如下循环程序 开始DPTR A R1 R02010 (@DPTR) A 00DPTR ADPTR+1 (@DPTR)否 ACC.7=1?是 R0 R0+1R1R1-1否 R1=0? 是 A R0 DPTR 2100 (@DPTR) A结束 执行结果:将初始值设定好后,运算得 2100H 单元为 02,与手算 结果相同,改变初值,再次运行,结果依然正确。2. 实验结果PC 值的变化SP 值的变化思考题:子程序中 PUSH ACC 的作用是什么?如果将这条指令去 掉,执行程序会出现什么情况? 答:指令 PUSH ACC 的作用:使得返回时的堆栈指针不变,保证 调用完子程序后能够正确返回。如果将这条指令去掉,则程序调 用完子程序后返回出错,会跳到别的地方。3. 查表程序问题:验证查找次数是否正确,读懂程序,给程序加上注释。答:赋初值执行,查找次数正确。程序注释如下ORG MOV 0000H DPTR,#2100H 子程序调用MOVX A,@DPTR MOV MOV MOV KEY1:CLR A B,A R0,#00H DPTR,#KYTRL ;将 2100H 单元的值赋给 B ; R0 用于计量查找次数, 初始化 ; 赋数据区的起始地址给 DPTR MOVC A,@A+DPTR CLR C ;将 C 清零,便于 A,B 的比较 ;比较 A,B,相等时表示找到 ;找到后跳至 KEY2SUBB A,B JZ INC INC KEY2 R0 DPTR;没找到时查找次数加 1,地址加 1 ;跳到 KEY1,重新比较查找SJMP KEY1 KEY2:MOV MOV A,R0DPTR,#2101H ; 保存查找次数到 2101H 单元MOVX @DPTR,A SJMP $ ORG KYTRL:DB DB DB END 2020H0FFH,0EFH,0F7H,0FBH 0DFH,0E7H,0EBH,0CFH OD7H,0DBH,0DDH;将数据区赋初值实验四1. 实验结果各地址单元数据变化:编程实验(二)程序跳转表 30H 01 01 02 02 03 0331H00 00 32H00 00 33H00 00 各寄存器变化:DPL00 19 19 19 19 19 PSW00 01 01 01 01 00 A00 01 02 04 03 06第一部实验五 并行接口实验程序(1) 自编程序①使第三个数码管各段轮流亮。硬件基础实验②使六个数码管共 42 段;LED 各段轮流亮。程序①如下ORG MOV MOV NEXTMOV MOV 0000H P1,#04H A,#01H P2,A R3,#0 LOOPMOV DJNZ DJNZ RL AR4,#0 R4,$ R3,LOOPSJMP NEXT END 程序②如下ORG MOV MOV MOV LOOP1:MOV MOV MOV NEXTMOV MOV LOOP2:MOV DJNZ DJNZ RL DJNZ MOV 0000H A,#01H R6,#06H R7,A P1,A R5,#07H A,#01H P2,A R3,#0 R4,#0 R4,$ R3,LOOP2 A R5,NEXT A,R7 RL MOV DJNZ END 实验程序(2)A R7,A R6,LOOP11.自编程序:编程并烧写程序完成置 1 键 ON 第一个数码管亮“1” , 拨 2 键第二个数码管亮“2” ,拨 3 键第三个亮“3” 。程序如下ORG MOV MOV STA1SETB MOV ASPMOV MOV CLP MOV MOV ASP1RRC JNC INC CJNE 0000H DPTR,#TAB0 P1,#01H C R0,#01 P0,#0FFH A,P0 A P1,A A,P0 A LED R0 R0,#9,ASP1 SJMP LEDMOVSTA1 A,R0MOVC A,@A+DPTR MOV SJMP P2,A STA1TAB0:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END 2.自编程序:编程并烧写程序完成置 1 键 ON 六个数码管轮流亮 1, 置 2 键轮流亮 2,置 3 轮流亮 3. 程序如下ORG MOV STA1SETB MOV ASPMOV MOV ASP1RRC JNC INC CJNE SJMP LEDMOV 0000H DPTR,#TAB0 C R0,#01 P0,#0FFH A,P0 A LED R0 R0,#9,ASP1 STA1 A,R0 MOVC A,@A+DPTR MOV WEMOV NEXT:MOV MOV LOPMOV LOP1NOP NOP DJNZ DJNZ RL CJNE SJMP R4,LOP1 R3,LOP A A,#10H,NEXT STA1 P2,A A,#01 P1,A R3,#0 R4,#0TAB0DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END实验六实验程序 1(1).分析该程序的功能及现象。中断答:功能:通过开关产生中断信号,显示数码管的不同段亮。现象:不断按下开关 W2, 可看到第三个数码管的不同段顺序点亮。(2).自编程序:①七个发光二极管(即一个数码管)同时点亮,中 断一次,同时熄灭,每中断一次,变反一次。②要求同①,每中断一次,变反四次。程序①如下ORG 0000HAJMP STAR ORG CPL MOV RETI STAR:MOV P1,#01H MOV MOV SETB SETB SETB SJMP END 程序②如下ORG 0 A,#0FFH P2,A EA EX0 IT0 $ 0003H A P2,AAJSM STAR ORG CPL 3 A MOVP2,AACALL TIME CPL AMOV P2,A ACALL TIME CPL AMOV P2,A ACALL TIME CPL AMOV P2,A ACALL TIME RETI STAR:MOV P1,#01H MOV A,#0FFH MOV P2,A SETB EA SETB EX0 SETB IT0 SJMP $ TIME:MOV R3,#0 LOPMOV LOP1:NOP R4,#0 NOP DJNZ R4,LOP1 DJNZ END 实验程序 2. 分析该程序的功能及现象 答:功能:记录并显示 INT0 中断的次数 现象:通过开关按键,按两下,数码管显示的数字增 1。自编程序:使第六个数码管显示“H” ,每中断一次, “H”左移一位。程序如下ORG AJMP ORG RR MOV RETI STAR:MOV P2,#F6H MOV A,#20H MOV P1,A SETB EA SETB EX0 SETB IT0 0000H STAR 3 A P1,A R3,LOP SIMP END$实验七 定时/计数器实验程序 1. 修改程序(使用查询方式)使计 3 个脉冲 A 加 1,并将 A 的值显示在数 码管上。程序如下ORG MOV MOV MOV MOV MOV MOV MOV MOV COUN:JNB CLR INC 0000H DPTR,#TAB0 TMOD,#6 TH0,#0FDH TL0,#0FDH P1,#0FFH A,#0 R0,A P2,#3FH TF0,$ TF0 A MOV MOVC MOV MOV SJMPR0,A A,@A+DPTR P2,A A,R0 COUNTAB0DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END实验程序 2. 修改程序(使用中断方式)使 3 个脉冲 A 加 1,并将 A 值显示在数 码管上。程序如下ORG SJMP ORG INC MOV MOVC MOV MOV RETI COUNMOV TMOD,#6 0000H COUN 000BH A R0,A A,@A+DPTR P2,A A,R0 MOV MOV MOV MOV MOV SETB SETB SETB SJMP ENDTH0,#0FDH TL0,#0FDH P1,#0FFH A,#0 P2,#3FH EA ET0 TR0 $实验程序 3.简易电子琴 计算“Do”的计算初值。解:单片机的内部脉冲:f1=HZ, 机器周期:T1=12/f1 Do 的频率:f2 为 262HZ, 音调周期:T2=1/f2 由于是半个音调周期就要产生一次中断, 则计时时间 t=T2/2 计时初值 tt=2(16)-t/T1=63628 转为十六进制为 F88C。
【单片机实验报告答案】单片微型计算机原理学院学号姓名指导教师成绩2011 年 6 月1 ? 硬件实验:实验一:定时器中断实验 实验内容:fosc=11.0592MHz,T0方式2产生定时中断实现秒表功能:数码管后两 位显示10ms;前两位显示秒数;K1/K2/K3键分别启动/停止/清零,按键操作不 分先后 实验程序流程图主程序流程图中断程序流程图:开始 初始化中断服务程序每250us执行一次 INTT0保护现场 250us计数+=1LCALL CONVERT LCALL DISPLAY N 有K1? Y SETB TR0 清计数值 N 有K2?N250us计数&=40 Y 250us计数=0, 10ms计数+=1N10ms计数&=100 Y Y 10ms计数=0, s计数+=1NY CLR TR0 Ns计数&=100 Y s计数=0有K3? Y恢复现场 RETI实验程序:ORG 0000H LJMP MAIN ORG 000BH LJMP INTT0 ORG 0100H MOV SP,#70H CALL INI_ALLMAIN:2 LOOP:CALL DISPLAY MOV DPTR,#8000H MOVX A,@DPTR JB ACC.7,NEXT SETB TR0 NEXTJB ACC.6,NEXT1 CLR TR0 NEXT1JB ACC.5,LOOP MOV R7,#0H MOV R6,#0H MOV R5,#0H LJMP LOOP /*INTT0*/ INTT0PUSH PSW PUSH ACC INC R5 CJNE R5,#40,CMP1 CMP1JC GOON MOV R5,#0H INC R6 CJNE R6,#100,CMP2 CMP2JC GOON MOV R6,#0H INC R7 CJNE R7,#100,CMP3 CMP3JC GOON MOV R7,#0H GOONPOP ACC POP PSW RETI /*INIALL*/ INI_ALL:MOV R7,#0H MOV R6,#0H MOV R5,#0H MOV IE,#82H MOV TMOD,#02H MOV TH0,#25 MOV TL0,#25 RET /*DISPLAY*/ DISPLAY:MOV DPTR,#TABLE MOV A,R7 MOV B,#10 DIV AB3 MOVC A,@A+DPTR MOV 33H,A MOV A,B MOVC A,@A+DPTR MOV 32H,A /**/ MOV A,R6 MOV B,#10 DIV AB MOVC A,@A+DPTR MOV 31H,A MOV A,B MOVC A,@A+DPTR MOV 30H,A /**/ MOV DPTR,#8000H MOV A,33H MOVX @DPTR,A MOV DPTR,#8100H MOV A,32H MOVX @DPTR,A MOV DPTR,#8200H MOV A,31H MOVX @DPTR,A MOV DPTR,#8300H MOV A,30H MOVX @DPTR,A RET TABLEDB 88H,0AFH,0C4H,86H,0A3H,92H,90H,8FH,80H,82H END实验结果:数码管后两位显示ms计数,前两位显示s计数,按K1键启动计数,K2 键停止计数,K3键清零。可实现秒表功能。实验二:驱动蜂鸣器实验 实验内容:使P3.5端口输出周期为1S的方波信号。并通过三极管驱动一个直流小 喇叭,使其发出断续的鸣响。实验程序:ORG 0H LJMP MAIN ORG 0100H MAINMOV SP,#70H STARTCPL P3.5 LCALL DELAY4 LJMP START DELAYMOV R7,#200 YMOV R6,#100 XNOP DJNZ R6,X DJNZ R7,Y RET END实验结果:蜂鸣器发出声响。实验三:显示管增一显示 实验内容:编写程序,使数码管从0000自增一加至9999,然后再自动清零循环。实验程序:ORG 0H LJMP MAIN ORG 0100H MAINMOV 30H,#0H MOV 31H,#0H MOV 32H,#0H MOV 33H,#0H MOV R0,#1 STARTLCALL DELAY LCALL CONVERT LCALL DISPLAY INC R0 CJNE R0,#255,XX LJMP START XXJC START JNC MAIN CONVERT:MOV A,R0 MOV B,#10 DIV AB MOV 30H,B MOV B,#10 DIV AB MOV 31H,B MOV 32H,A RET DISPLAY:MOV A,30H MOV DPTR,#TABLE MOVC A,@A+DPTR MOV DPTR,#2402019MOVX @DPTR,A MOV A,31H MOV DPTR,#TABLE MOVC A,@A+DPTR MOV DPTR,#8200H MOVX @DPTR,A MOV A,32H MOV DPTR,#TABLE MOVC A,@A+DPTR MOV DPTR,#8100H MOVX @DPTR,A MOV A,33H MOV DPTR,#TABLE MOVC A,@A+DPTR MOV DPTR,#8000H MOVX @DPTR,A RET DELAYMOV R7,#100 YMOV R6,#50 XNOP DJNZ R6,X DJNZ R7,Y RET TABLEDB 88H,0AFH,0C4H,86H,0A3H,92H,90H,8FH,80H,82H END实验结果:八段数码显示管如题目要求所示自增一显示。? 软件实验实验一:数据传送实验 实验内容:编写程序,将内部RAM中的30H-5FH中的数据设置为55H; (1)将其中内容传送到90H开始的内部RAM中去。(2)将其中内容传送到200H开始的外部RAM中去。实验程序流程图:6 开始 设置指针从源地址取出数据 传送数据到目的地址 调整指针传送结束 结束实验程序:ORG 0000H LJMP MAIN ORG 0100H MOV SP,#70H MOV R0,#30H MOV R7,#30H MOV A,#55H MOV @R0,A INC R0 DJNZ R7,LOOP1 MOV R0,#30H MOV R7,#30H MOV R1,#90H MOV A,@R0 MOV @R1,A INC R0 INC R1 DJNZ R7,LOOP2 SJMP WAITNMAIN:LOOP1:LOOP2:WAIT:/*SJMP $*/7 END 实验结果内部RAM,30H-5FH单元内都为55H。内部RAM,90H开始的单元内都为55H。外部RAM,200H开始的单元内都为55H实验二:数据分类与校验实验 实验内容:编写程序,将内部RAM中30H-5FH中的数据设置为1-48;并将其中奇 数传送到90H开始的内部RAM中;将30H-5FH中的数据设置按照奇校验设置最高 位。实验程序流程图:8 开始 设置指针取出数据传送数据Y是奇数?调整指针 传送结束?N结束实验程序ORG 0000H LJMP MAIN ORG 0100H MAINMOV SP,#70H MOV R0,#30H MOV R7,#30H MOV A,#1 LOOP1MOV @R0,A INC R0 INC A DJNZ R7,LOOP1 MOV R0,#30H MOV R7,#30H MOV R1,#90H LOOP2MOV A,@R0 INC R0 JB 0E0H,TRANS JMP NTRANS TRANSMOV @R1,A INC R1 NTRANS:DJNZ R7,LOOP2 END 实验结果内部RAM中30H-5FH中的数据为1-48;其中奇数传送到90H单元。9 H-5FH中的数据设置按照奇校验设置最高位送到90H单元内。程序段如下//奇校验设置最高位 MOV R0,#30H MOV R7,#30H MOV R1,#90H LOOP3MOV A,@R0 INC R0 JNB P,TRANS2 JMP NTRANS2 TRANS2:SETB 0E7H MOV @R1,A INC R1 NTRANS2:DJNZ R7,LOOP3实验三:简单算术运算 实验内容:编写程序,计算1-100的累加和。结果存放于内部RAM的30H、31H中, 低字节在前。实验程序流程图:10 开始 设置指针, 累加和清0取出数据,与 累加和相加调整指针N累加结束?停止实验程序ORG 0000H LJMP MAIN ORG 0100H MAINMOV SP,#70H MOV R0,#30H MOV R1,#31H MOV @R0,#0 MOV @R1,#0 MOV B,#1 MOV R7,#100 L1MOV A,@R1 ADD A,B MOV @R1,A MOV A,@R0 ADDC A,#0 MOV @R0,A INC B DJNZ R7,L1 END 实验结果(30H)=13H,(31H)=0BAH,即结果为13BAH=5050D。11 实验四:定点数算术运算实验 实验内容:编写2字节乘2字节子程序。乘数位于R2R3,被乘数位于R4R5。结果 存放于R4R5R6R7内。实验说明:R4R5 * R2R3 B A B A B A B A R4R5R6R7实验程序:ORG 0H LJMP MAIN ORG 0100H MAINMOV R2,#04H MOV R3,#03H MOV R4,#02H MOV R5,#01H MOV R6,#0H MOV R7,#0H MOV R0,#16D/*JISHU*/ CLR C LOOPMOV A,R5 RLC A MOV R5,A MOV A,R4R5*R3 R4*R3 R5*R2 R4*R212 RLC A MOV R4,A MOV A,R7 RLC A MOV R7,A MOV A,R6 RLC A MOV R6,A MOV 26H,R6 MOV 27H,R7 MOV A,R2 CJNE A,26H,NEXT1 NEXT1JNC NEXT2 MOV A,R3 CJNE A,27H,NEXT3 NEXT3JNC NEXT2 CLR C MOV A,R7 SUBB A,R3 MOV R7,A MOV A,R6 SUBB A,R2 MOV R2,A SETB C NEXT2DJNZ R0,LOOP WAITSJMP WAIT END实验结果:当(R4R5)=21H,(R2R3)=43H时,运算结果为(R4R5R6R7)=08A3H。13
1 * 4 3 0 3 0 6 0 4 0 8 0 8 A 3R5*R3 R4*R3 R5*R2 R4*R2实验五:数制转换实验一 实验内容:编写程序,将内部RAM中30H中的二进制数据转换为十进制数据并存 放在31H、32H、33H中。实验程序流程图:开始 取出数据至累加器A/100后商即为百位 余数/10后商即为十位 余数即为个位 结束实验程序:ORG 0H LJMP MAIN ORG 0100H MAINMOV 30H,#0ABH MOV A,30H MOV B,#100D DIV AB14 MOV 31H,A MOV A,B MOV B,#10D DIV AB MOV 32H,A MOV 33H,B WAITSJMP WAIT END实验结果:假设(30H)=0ABH,则(31H、32H、33H)=(01、07、01)。实验六:数制转换实验二 实验内容:编写程序,将内部RAM中30H-3FH中的16进制数据(0-F)转换为ASCII码 并存放在40H-4FH中。实验程序:ORG 0H LJMP MAIN ORG 0100H MAINMOV R0,#30H MOV A,#0H MOV R2,#16D LOOP1MOV @R0,A INC A INC R0 DJNZ R2,LOOP1 MOV R0,#30H MOV R1,#40H MOV R2,#16D LOOPMOV A,@R0 INC R0 CLR C SUBB A,#10D JC SMALL ADD A,#7 SMALLADD A,#3AH MOV @R1,A15 INC R1 DJNZ R2,LOOP WAITSJMP WAIT END实验结果:实验七:数据统计实验一 实验内容:编写程序,首先将内部RAM中30H-7FH中的数据设置为50H-9FH。然后 编写程序统计该区域内大于80H的个数,结果存放在寄存器B内。实验程序:ORG 0H LJMP MAIN ORG 0100H MAINMOV R0,#30H MOV A,#50H MOV R2,#80D LOOP1MOV @R0,A INC A INC R0 DJNZ R2,LOOP1 MOV R0,#30H MOV R1,#0H MOV R2,#80D LOOPCJNE @R0,#81H,NEXT NEXTJC NEXT1 INC R1 NEXT1INC R0 DJNZ R2,LOOP MOV B,R1 WAITSJMP WAIT END实验结果:首先将30H-7FH中的数据设置为50H-9FH16 统计该区域内大于80H的个数,结果存放在寄存器B内,(B)=20H。实验八:数据统计实验二 实验内容:编写程序,首先将内部RAM中30H-7FH中的数据设置为50H-9FH;然后 统计该区域内的奇数个数,存放在R6中,正数个数放在R7。实验程序:ORG 0H LJMP MAIN ORG 0100H MAINMOV R0,#30H MOV A,#50H MOV R2,#80D LOOP1MOV @R0,A INC A INC R0 DJNZ R2,LOOP1 MOV R0,#30H MOV R6,#0H/*JI*/ MOV R7,#0H/*ZHENG*/ MOV R2,#80D LOOPMOV A,@R017 JNB ACC.0,NEXT1 INC R6 NEXT1JB ACC.7,NEXT2 INC R7 NEXT2INC R0 DJNZ R2,LOOP WAITSJMP WAIT END实验结果首先将30H-7FH中的数据设置为50H-9FH统计的奇数个数存放在R6中,(R6)=28H18
【单片机实验报告答案】单片机实验报告班 级:X 姓 名窦 杰 学 号26 指导教师赵英亮 实验一1.实验目的多字节十进制加法程序设计(2 学时)1.熟悉仿真器的软件使用环境及单片机汇编语言编程; 2. 掌握多字节十进制加法的程序设计及实现方法。3.练习汇编语言源程序的设计方法,了解手工汇编目标程序的方法。4. 掌握 Keil 软件的使用 2.实验设备 装有 Keil 软件的 PC 机、CPU 挂箱、8031CPU 模块 3.实验内容 编写多字节十进制加法程序,实现下式运算 学号学号后一位+学号后两位学好后三位=结果 例如:4574+6728=11302 4.实验电路5.实验程序 ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV A,20H ADD A,30H DA A MOV 22H,A MOV A,21H ADDC A,31H DA A MOV 21H,A CLR A MOV R3,00H ADDC A,R3 MOV 20H,A END 6.实验步骤 Ⅰ.开机启动 Keil C51 软件进入μ Vision2 集成开发环境,确认 89C51 处于软件仿真状态。Ⅱ.完成程序的设计、编辑、编译、连接。Ⅲ.进入 DEBUG 方式,打开存储器 Memory 1 窗口,在窗口 Address 栏键入 D:20H;点击鼠标 右键,选择最后一项 Modify Memory ,输入被加数;在窗口 Address 栏键入 D:30H;点击鼠 标右键,选择最后一项 Modify Memory ,输入加数。Ⅳ.调试和运行程序并记录存储器 Memory 1 窗口实验结果。Ⅴ.完成实验报告 7.实验结果 输入被加数,即自己的学号 26,以及后一位 27,确认输入加数,即学号后两位以及后三位 28,29,确认 得出和值8. 实验中遇到的问题及解决方法MCS-51 的七种寻址方式1、 立即寻址:用于传送立即数 2、 直接寻址:用于片内 RAM 单元 3、 寄存器寻址:用于寄存操作 4、 寄存器间接寻址:用 R0 或 R1 作间址对片内 RAM 操作 5、 相对寻址:用 PC+偏移量操作目的地址 实验二1.实验目的简单 I/0 口扩展实验――交通灯控制实验1.学习在单片机系统中扩展简单 I/0 接口的方法。2.学习数据输出程序的设计方法。3.学习模拟交通灯控制的实现方法。2.实验设备 装有 Keil 软件的 PC 机、CPU EL-MUT-III 型单片机实验箱、8031CPU 模块 3.实验内容 扩展实验箱上的 74LS273Z 做为输出口,控制八个发光二极管亮灭,模拟交通灯管理。4.实验电路5.实验程序NAME PORT CSEG T3 EQU AT 0CFA0H 0000H ;I/O 口扩展实验一 ;片选地址 CS0LJMP START CSEGAT4100H A,#11H ;两个红灯亮,黄灯、绿灯灭 ;调用 273 显示单元(以下雷同) ;延时 3 秒 ;东西路口绿灯亮;南北路口红灯亮STARTMOVACALL DISP ACALL DE3S LLLMOV A,#12HACALL DISP ACALL DE10S MOV A,#10H ;延时 10 秒 ;东西路口绿灯灭;南北路口红灯亮ACALL DISP MOV TTTMOV R2,#05H A,#14H ;R2 中的值为黄灯闪烁次数 ;东西路口黄灯亮;南北路口红灯亮ACALL DISP ACALL DE02S MOV A,#10H ;延时 0.2 秒 ;东西路口黄灯灭;南北路口红灯亮ACALL DISP ACALL DE02S DJNZ MOV R2,TTT A,#11H ;延时 0.2 秒 ;返回 TTT,使东西路口黄灯闪烁五次 ;两个红灯亮,黄灯、绿灯灭ACALL DISP ACALL DE02S MOV A,#21H ;延时 0.2 秒 ;东西路口红灯亮;南北路口绿灯亮ACALL DISP ACALL DE10S MOV A,#01H ;延时 10 秒 ;东西路口红灯亮;南北路口绿灯灭ACALL DISP MOV GGGMOV R2,#05H A,#41H ;黄灯闪烁五次 ;东西路口红灯亮;南北路口黄灯亮ACALL DISP ACALL DE02S MOV A,#01H ;延时 0.2 秒 ;东西路口红灯亮;南北路口黄灯灭ACALL DISP ACALL DE02S DJNZ MOV R2,GGG A,#03H ;延时 0.2 秒 ;返回 GGG,使南北路口;黄灯闪烁五次 ;两个红灯亮,黄灯、绿灯灭 ACALL DISP ACALL DE02S JMP DE10SMOV JMP DE3SMOV JMP DE02SMOV DE1DE2DE3MOV MOV DJNZ DJNZ DJNZ RET DISPMOV CPL MOVX RET END DPTR,#PORT A @DPTR,A ;273 显示单元 LLL R5,#100 DE1 R5,#30 DE1 R5,#02 R6,#200 R7,#126 R7,DE3 R6,DE2 R5,DE1 ;延时 0.2 秒 ;延时 3 秒 ;延时 0.2 秒 ;转 LLL 循环 ;延时 10 秒6.实验步骤 1.74LS273 的输出 00~07 接发光二极管 L1~L8 2.74LS273 的片选 CS273 接片选信号 CS0。3.编写程序 4.运行观察灯泡变化 7.实验结果 8. 实验中遇到的问题及解决方法 在实验使用试验箱时一定要清楚交叉线所叉的位置并进行 COM 的选择,在程序下载到试验 箱之前一定要断电操作,避免在实验时出现错误提示。 实验三 定时器应用程序设计与调试(2 学时) 循环彩灯实验1.实验目的 1.学习 8031 内部计数器的使用和编程方法。2.进一步掌握中断处理程序的编写方法。2.实验设备 装有 Keil 软件的 PC 机、CPU EL-MUT-III 型单片机实验箱、8031CPU 模块 3.实验内容 由 8031 内部定时器 1 按方式 1 工作, 即做为 16 位定时器使用, 每 0.1 秒钟 T1 溢出中断一次。P1 口的 P1.0~P1.7 分别接发光二极管的 L1~L8。要求编写程序模拟一循环彩灯。彩灯变化花样 可自行设计。例程给出的变化花样为:①L1、L2、???L8 依次点亮;②L1、L2、???L8 依次熄灭;③L1、L2、???L8 全亮、全灭。各时许间隔为 0.5 秒。让发光二极管按以上规 律循环显示下去。4.实验电路5.实验程序ORG 0000H JMP START ORG 0003H JMP X0_INT ORG 000BH JMP T0_INT ORG 0013H JMP X1_INT ;--------------------------------STARTMOV TMOD, #51H ;/* 计数,T0 定时*/MOV TH0, #HIGH(65536 - 50000) ;50ms@12MHz MOV TL0, #LOW (65536 - 50000) MOV TH1, #0 MOV TL1, #0 SETB TR0 SETB TR1 SETB IT0 SETB IT1 MOV IE, #B MOV IP, #B MOV R7, #20 MOV 30H, #20 MOV 31H, #0 MOV 32H, #0 MOV P2, 31H INC P2 SJMP $ ;--------------------------------- T0_INT:;50ms 执行一次MOV TL0, #LOW (65536 - 50000) ;重新写入初始值 MOV TH0, #HIGH(65536 - 50000) ;50ms@12MH-----------------JIAJB P3.0, JIAN ;加速DEC 30H MOV A, 30H JNZ XXX INC 30H XXX; JNB P3.0, $;不能让它为 0;-----------------JIANJB P3.1, XIANSHIINC 30H MOV A, 30H SUBB A, #80 JC CCCMOV 30H, #80 CCC; JNB P3.1, $ ;-----------------XIANSHIDJNZ R7, T0_END MOV R7, 30H INC 32H ANL 32H, #7 ;-----------------MOV A, 31H ANL A, #3 RL RL RL A A AADD A, 32H MOV DPTR, #HUA_Y MOVC A, @A+DPTR CPL A MOV P1, A ;-----------------T0_ENDRETI ;--------------------------------X0_INT;设置花型 INC 31H ANL 31H, #3 MOV P2, 31H INC P2 RETI ;--------------------------------X1_INTCPL TR0 RETI ;--------------------------------HUA_YDB 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01 DB 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80 DB 0x81,0x42,0x24,0x18,0x81,0x42,0x24,0x18 DB 0x18,0x24,0x42,0x81,0x18,0x24,0x42,0x81 END ;启动/停止6.实验步骤 1.定时常数的确定 机器周期=12÷晶振频率=12/(6×10)=2us 设计数初值为 X,则(2e+16-X)×2×10-6=0.1,可求得 X=15535 化为十六进制则 X=3CAFH,故初始值为 TH4=3CH,TL1=AFH 2.初始化程序 包括定时器初始化和中断操作系统初始化,主要是对 IP、IE、TCON、TMOD 相应位进行正 确的设施,并将时间常数送入定时器中。由于只有定时器中断,IP 便不必设置。3.设计中断服务程序和主程序 中断服务程序除了要完成技术减一工作外, 还要将时间常数重新送入定时器中, 为下一次 中断做准备。主程序则用来控制发光二极管按要求顺序燃灭。7.实验结果 彩灯从右往左依次循环点亮。(图片仅显示部分) 8. 实验中遇到的问题及解决方法 本实验使用定时器从 P1.0 口输出特定频率的方波, 如何输出频率变换的方波, 同时从不同 I/O 口输出方波。可以使用定时器 T0 的方式三来实现,定时器 TO 方式三可以看作是两个 独立的八位定时器,分别产生两个频率不同的方波。 实验四1.实验目的LCD 显示实验(2 学时)1. 学习液晶显示的编程方法,了解液晶显示模块的工作原理。2. 掌握液晶显示模块与单片机的接口方法。2.实验设备 装有 Keil 软件的 PC 机、CPU EL-MUT-III 型单片机实验箱、8031CPU 模块 3.实验内容 编程实现在液晶显示屏上显示中文汉字“中北电信 1 班×× ×××” 。4.实验电路LCD 显示电路5.实验程序PA EQU 0CFA0H PB EQU 0CFA1H PCC EQU 0CFA2H PCTL EQU 0CFA3H STOBE0 EQU 70H STOBE1 EQU 71H CSEG AT 0000H LJMP START CSEG AT 4100H ;---------------------------------------STARTMOV DPTR, #PCTL MOV A, #88H;PC0 复位控制字 ;PC0 置位控制字 MOVX @DPTR, A MOV DPTR, #PCTL MOV A, #STOBE0 MOVX @DPTR, A MOV A, #0F4H ACALL SUB2 ACALL DELAY;置 PA 口输出,PC 口高 4 位输入,低 4 位输出;清屏START1MOV R0, #01H MOV R1, #3CH HE1MOV DPTR, #PCC MOVX A, @DPTR JB ACC.7, HE1 ACALL SUB1 ACALL SUB2 DJNZ R1, HE1 ACALL DELAY ACALL DELAY ACALL DELAY LJMP START1 ;------------------------------------------------------DELAYMOV R2, #23H DEL0MOV R4, #06FH DEL1MOV R6, #06FH DEL2DJNZ R6, DEL2 DJNZ R4, DEL1 DJNZ R2, DEL0 RET ;------------------------------------------------------SUB2MOV DPTR, #PA MOVX @DPTR, A MOV DPTR, #PCTL MOV A, #STOBE1 MOVX @DPTR, A INC R0 HE2MOV DPTR, #PCC MOVX A, @DPTR JNB ACC.7, HE2 MOV DPTR, #PCTL MOV A, #STOBE0 MOVX @DPTR, A RET ;----------------------------------------SUB1MOV A, R0 ; 显示“中北电信三班 26 窦杰” DB DB DB DB DBMOVC A,@A+PC RET 0F0H,01D,00D,54D,48D,0F0H,02D,00D,17D,17D; 0F0H,03D,00D,21D,71D,0F0H,04D,00D,48D,37D; 0F0H,05D,00D,40D,93D,0F0H,06D,00D,16D,64D; 0F0H,01D,01D,03D,18D,0F0H,02D,01D,03D,22D; 0F0H,03D,01D,81D,28D,0F0H,04D,01D,29D,60D; END显示“中北” 显示“电信” 显示“三班” 第二行显示“26” 第二行显示“窦杰”6.实验步骤 1、实验连线开始 初始化 查表读数据8255 的 PA0~PA7 接 DB0~DB7,PC7 接 BUSY,PC0 接 REQ, CS8255 接 CS0。2、运行实验程序 T20.asm,观察液晶的显示状态。BUSY为0? Y 数据输出 REQ置位NBUSY为1? Y REQ复位 NN数据读完? Y7.实验结果结束8. 实验中遇到的问题及解决方法 通过本次试验的硬件连接操作,熟悉掌握了 C51 和 LED 的连线;通过 LED 显示程序,掌握 汉字和数字的显示方法。总的来说,本次试验收获颇丰。}

我要回帖

更多关于 8051单片机复位后,PC的值是 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信