1 / 49

单片机原理

单片机原理. 第 10 章 实训. 10.1 实训一 数据传送. 第 10 章 实训. 10.1.1 实训目的. 掌握 8031 内部 RAM 和外部 RAM 之间的数据传送方法及这两个存储器的特点与应用。. 第 10 章 实训. 10.1. 2 实训内容. 编写并调试一个数据传送程序实现: ①将 50H ~ 5FH 数据送到数据存储 7E00H ~ 7E0FH 单元中; ②将数据存储 7E00H ~ 7E0FH 中的数据送到 8031 单片机内部 RAM 的 60H ~ 6FH 中;

suzy
Télécharger la présentation

单片机原理

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 单片机原理

  2. 第10章 实训

  3. 10.1 实训一 数据传送 第10章 实训 10.1.1 实训目的 掌握8031内部RAM和外部RAM之间的数据传送方法及这两个存储器的特点与应用。

  4. 第10章 实训 10.1.2 实训内容 编写并调试一个数据传送程序实现: ①将50H~5FH数据送到数据存储7E00H~7E0FH单元中; ②将数据存储7E00H~7E0FH中的数据送到8031单片机内部RAM的60H~6FH中; ③将以(R2,R3)为源RAM区首地址内的(R6、R7)两个字节数据,传送到以(R4、R5)为末地址的RAM区中。

  5. 第10章 实训 10.1.3 程序流程图 本实训要求①实现的程序流程图如图10-1所示,其余要求的实现与之类似。

  6. 第10章 实训 10.1.4 调试方法 (1)打开仿真软件中内部数据空间和外部数据空间,在50H~5FH数据单元中分别送数,如1,2,3,4,…等16个数据。 (2)单步运行(断点设在BP2,程序运行至断点),检查外部RAM(7E00H~7F0FH)数据是否与50H~5FH数据一一对应。 (3)如果程序运行不能进入某一断点,则应单步、断点分段检查程序,排除错误直至正确为止。

  7. 第10章 实训 10.1.5参考程序 MAIN: MOV R0,#50H MOV R7,#16 MOV DPTR,#7E00H LOOP: MOV A,@R0 MOVX @DPTR,A INC DPTR INC R0 DJNZ R7,LOOP HALT:SJMP HALT

  8. 第10章 实训 10.1.6 实训思考 试编写将外部数据存储区6030H~607FH的内容写入外部RAM的7030H~707FH中。

  9. 10.2 实训二数据传送 第10章 实训 10.2.1 实训目的 通过编写数据转换程序,熟悉MCS-51系列单片机的汇编语言程序设计方法。

  10. 第10章 实训 10.2.2 实训内容 编写并调试一个二进制转十进制程序,其功能为将40H、50H两数据单元中的二进制数转换为十进制数,并将转换结果存放在R4、R5、R6数据单元中。

  11. 第10章 实训 10.2.3 程序流程图 本实训的程序流程图如图所示。

  12. 第10章 实训 10.2.4 调试方法 (1)、断点设在BP1,程序运行至BP1,检查40H、50H内容是否与输入值对应。 (2)、断点设在BP2,程序运行至BP2,检查R4、R5、R6的内容是否为二进制所对应的十进制转换结果。 (3)、程序连续运行。若有错误应改用单步或断点分段调试程序,排除软件错误,直至正确为止。 (4)、改动40H、50H中的内容。连续运行观察结果正确与否。

  13. 第10章 实训 10.2.5参考程序 MAIN: MOV A,#60H MOV 40H,A MOV A,#3CH MOV 50H,A MOV A,40H; BP1 ACALL B2TO10 ;调用二进制转十进制子程度 MOV A,50H; BP2 CALL B2TO10 HALT: SJMP HALT B2TO10:MOV B,#0AH ;除十求余的方法将二进制转换为十进制 DIV AB MOV R6,B MOV B,#0AH DIV AB MOV R4,A MOV A,B MOV R5,A RET

  14. 第10章 实训 10.2.6 实训思考 试编写一个功能和本实验类似的整数十进制转二进制的程序。

  15. 10.3 实训三 时钟操作编程 第10章 实训 10.3.1 实训目的 熟悉8051单片机的中断过程、中断服务程序的设计方法;熟悉8051单片机的查表指令、散转指令的功能和使用方法;掌握查表和散转程序的设计与调试。

  16. 第10章 实训 10.3.2 实训内容 编程设置定时器每100μs中断一次,在中断服务程序中,对中断次数进行计数,100μs计数10000次就是1秒。然后再对秒计数得到分和小时值,并送入显示缓冲区。

  17. 第10章 实训 10.3.3 程序流程图 本实训实现的程序流程图如图所示。

  18. 第10章 实训 10.3.4 调试方法 (1)断点设在BP1,进入断点地址,检查30H内容是否是时间的变化。 (2)断点设在BP2,程序运行至断点,检查(SP)内容返回地址高位。 (3)断点设在BP3,程序运行至断点,检查P1.0的电平是否反转, 若有错误,应改用单步或断点分段调试,排除软件错误,直至正确为止。

  19. 第10章 实训 10.3.5参考程序 ORG0000H TickEQU 10000 ;10000 × 100μs = 1s T100μs EQU256-50 ;100μs时间常数(6M) C100μsEQU30H ;100μs记数单元 LEDBμF EQU0 LED EQUP1.0 LJMPSTART ORG 000BH T0Int: ;TO中断服务程序 PUSHPSW MOVA, C100μs+1 JNZGOON DECC100μs GOON: DEC C100μs+1 MOVA, C100μs ORLA, C100μs+1 JNZEXIT ;100μs 记数器不为0, 返回 MOVC100μs, #HIGH(Tick) ;100μs 记数器为0, 重置记数器 MOVC100μs+1, #LOW(Tick) CPLLEDBUF ; 取反LED EXIT:

  20. 第10章 实训 10.3.5参考程序 POPPSW ; 恢复现场 RETI ; 中断返回 START: MOVTMOD, #02H ; 方式2, 定时器 MOVTH0, #T100μs MOVTL0, #T100μs MOVIE, #10000010B ; EA=1, IT0 = 1 SETBTR0 ; 开始定时 CLRLEDBUF CLRLED MOVC100μs, #HIGH(Tick) MOVC100μs+1, #LOW(Tick) LOOP: ; LED显示并等待中 MOV C, LEDBUF MOVLED, C LJMPLOOP END

  21. 第10章 实训 10.3.6 实训思考 若将0~F按键对应查表为1~16立方表(十进制),并在LED数码管上显示,程序应该怎样修改?

  22. 10.4 实训四 计数器编程 第10章 实训 10.4.1 实训目的 掌握定时器T0、T1的方式选择和编程方法,了解计数器程序设计方法,进一步学会实时I/O程序的调试方法。

  23. 第10章 实训 10.4.2 实训内容 编写并调试一个程序,用定时器T0计数,使计数器从0开始以一个周期的速度加1计数,显示器实时显示其计数值。

  24. 第10章 实训 10.4.3 程序流程图 本实训实现的程序流程图如图所示。

  25. 第10章 实训 10.4.4 调试方法 (1)断点设在BP1,程序运行到BP1,应进入中断服务程序,否则应检查T0初始化程序正确与否。 (2)程序连续运行,显示器缓冲区从0开始加1显示。 若有错误应改用单步或断点分段调试程序,排除软件错误,直至正确为止。

  26. 第10章 实训 10.4.5参考程序 MOVTMOD, #00000101B; 方式1,记数器 MOVTH0, #0 MOV TL0, #0 SETBTR0; 开始记数 LOOP: MOV P1, TL0; 将记数结果送P1口 LJMPLOOP END

  27. 第10章 实训 10.4.6 实训思考 若6位显示器计数值从999999减1计数,程序应怎样修改?

  28. 10.5 实训五 数据排序实验 第10章 实训 10.5.1 实训目的 熟悉8031单片机的指令系统;掌握程序设计方法。

  29. 第10章 实训 10.5.2 实训内容 编写并调试一个排序子程序,其功能为用冒泡法将内部RAM中的n个单字节无符号二进制整数从小到大的次序重新排列,并将这一列数据从小到大依次序存储在以6000H为起始地址的单元中。

  30. 第10章 实训 10.5.3 程序流程图 本实训实现的程序流程图如图所示。

  31. 第10章 实训 10.5.4 调试方法 (1)打开仿真软件中的内部RAM窗口,在50H~59H单元中输入10个任意排列的原始数据。 (2)单步运行程序,两数比较后,若第一个数大于第二个数则所在RAM位置交换,否则不变。 (3)单步运行程序(或断点运行),检查50~59H内容是否已经按从小到大的顺序排列。 (4)连续运行,再打开仿真软件的外部存储窗口,查看6000H内容是否有10个数据按从小到大的顺序排列。 (5)程序运行如果不正确,则应分段检查程序,用单步或断点方式调试程序,排除错误。最后修改软件初始值、交换五组数据测试程序的正确性。

  32. 第10章 实训 10.5.5参考程序 MOV @R1,A INC DPTR INC R1 DJNZ R7,LOOP CALL SORT; 调用排序子程序 CALL SORT MOV DPTR,#6000H MOV A,#50H MOV R7,#10 LOOPI:MOVX @DPTR,A INC DPTR INC A DJNZ R7,LOOPI CDO: CALL DISPLAY SJMP CDO ORG 0000H JMP MAIN SIZEDB 10 DATADB 55H,33H,66H, 77H,99H, 11H, 22H, 88H, 44H, 00H TAG DB 20H MAIN:MOV SP,#70H MOV DPTR,#DATA MOV R1,#50H ; 在片内RAM中数据地址 MOV R7,#10; 10个数排序 LOOP:CLR A MOVC A,@A+DPTR 将10个原始数存入50H~51H单元中

  33. 第10章 实训 10.5.5参考程序 NOTEQUAL:JCNEXT; 前小后大, 不交换 SETB TAG; 前大后小, 置交换标志 XCH A, @R0; 交换 DEC R0 XCH A, @R0 INC R0 NEXT:DJNZ R7, COON JB TAG, SORT RET DISPLAY:… END SORT: MOV R0, #50H; 排房子程序 MOV R7, #SIZE-1 CLR TAG COON: MOV A, @R0 MOV R2, A INC R0 MOV B, @R0 CJNE A, B, NOTEQUAL SJMP NEXT

  34. 10.6 实训六 P1口彩灯控制实验 第10章 实训 10.6.1 实训目的 通过实验了解单片机最小系统;了解P1口作为输入、输出方式使用时,CPU对P1口操作方法。

  35. 第10章 实训 10.6.2 实训内容 (1)P1口输出练习。 (2)编制程序使P1口8个发光二极管同时灭,延时0.5s,同时亮,反复循环。 (3)发光二极管依次间隔0.5s点亮一只,反复循环。 (4)编制P1口演示实验程序,使8个发光二极管0.5s(LED)每隔一个(或二个)右移(左移),循环点亮。

  36. 第10章 实训 10.6.3 程序流程图 本实训实现的程序流程图如图所示。

  37. 第10章 实训 10.6.4实验步骤 1.实验线路连接 (1)将8031、373、2764组合成为最小系统,其中地址线和数据线已经连好,也可用分立的器件一个一个连接P1口、P2口、P3口的P2.5、P2.6、P2.7,包括数据口P0均有引出插座可外接。8031的复位电路、振荡电路均已连好,复位电路还加接了按键可随时复位系统。 (2)先将组合最小系统板和驱动板、8彩灯板拼装好,且称为实验系统,然后按照图10-7所示的接线原理图,在反面连接好线,反复检查,不要错线、漏线。连好线后,再在元件表面用万用表Ω档检查连线的各脚之间是否相通,检查无误后再进行下一步。

  38. 第10章 实训 10.6.4实验步骤 2.硬件诊断 硬件正常工作是单片机系统最基本的条件,诊断硬件好坏方法有: (1)用瞬间短路法诊断硬件好坏。 (2)用仿真器诊断硬件好坏。 (3)用下载式开发系统诊断硬件好坏(相当于直接固化程序调试)。 (4)用专用的编程器(固化器)来固化程序调试。

  39. 第10章 实训 10.6.4实验步骤 3.程序编写与调试 (1)硬件仿真调试 ①编辑程序。 ②汇编程序。 ③装载程序。 ④运行程序。 ⑤查看结果。

  40. 第10章 实训 10.6.4实验步骤 (2) .软件仿真调试方法 • 在文件项目中编辑文件(或打开以上文件6.AMS)。 • 在项目中建立新项目,增加新文件。 • 汇编。 • 设置。首先设置操作项,再设置窗口观察项,只打开主寄存器窗口和P1口状态图就行。 • 调试。还是用单步运行,观察P1、A、R4、R5中数据变化情况与所编程序是否一致。

  41. 10.7 实训七 键盘扫描显示 第10章 实训 10.7.1 实训目的 掌握89C51键盘、显示器的接口方法;掌握按键并将键值显示出来的编程方法。为诊断硬件,测试硬件,产品开发、软件编程打下基础。

  42. 第10章 实训 10.7.2 实训内容 (1)编写并调试出一个键盘子程序。 (2)用子程序调用方法,分别调用键盘子程序和显示子程序,将按一个键的值(0~F),在数码管上显示出来,依次显示或定位分别显示。

  43. 第10章 实训 10.7.3 程序流程图 本实训实现的程序流程图如图所示。

  44. 第10章 实训 10.7.4实验步骤 1.实验线路连接 将组合实训板拼装好,按图连接好每一条线,检查无误后可进行下一步。

  45. 第10章 实训 10.7.4实验步骤 DB3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H DB7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71H DELAY:; 延时子程序 MOV R7, #0 DELAYLOOP: DJNZR7, DELAYLOOP DJNZR6, DELAYLOOP RET DISPLAYLED: MOVR0, #LEDBUF MOVR1, #6; 共6个八段管 MOVR2, #00100000B ; 从左边开始显示 LOOP: 2.固化以下程序 ORG 0000H OUTBITEQU 0FE02H; 位控制口 CLK164EQU 0FE04H; 段控制口(接164时钟位) DAT164EQU 0FE06H; 段控制口(接164数据位) INEQU 0FE00H; 键盘读入口 LEDBUF EQU 60H;显示缓冲 LJMP START LEDMAP: ; 八段管显示码

  46. 第10章 实训 10.7.4实验步骤 KEYTABLE:; 键码定义 DB16H, 15H, 14H, 0FFH DB13H, 12H, 11H, 10H DB0DH, 0CH, 0BH, 0AH DB0EH, 03H, 06H, 09H DB0FH, 02H, 05H, 08H DB00H, 01H, 04H, 07H GETKEY: MOV DPTR, #OUTBIT MOV P2, DPH MOV R0, #LOW(IN) MOV R1, #00100000B MOV R2, #6 KLOOP: TESTKEY: MOV DPTR, #OUTBIT MOV A, #0 MOVX @DPTR, A; 输出线置为0 MOV DPTR, #IN MOVXA, @DPTR; 读入键状态 CPLA ANLA, #0FH; 高四位不用 RET

  47. 第10章 实训 10.7.4实验步骤 MOV R1, A; 键值 = 列 X 4 + 行 MOVA, R2 DECA RLA RLA MOV R2, A; R2 = (R21)*4 MOV A, R1 ; R1中为读入的行值 MOV R1, #4 LOOPC: RRCA ; 移位找出所在行 JC EXIT INC R2; R2 = R2+ 行值 DJNZ R1, LOOPC EXIT: MOVA, R1; 找出键所在列 CPLA MOVX @DPTR, A CPL A RRA MOV R1, A ; 下一列 MOVX A, @R0 CPLA ANL A, #0FH JNZ GOON1 ; 该列有键入 DJNZ R2, KLOOP MOV R2, #0FFH ; 没有键按下, 返回 0FFH SJMP EXIT GOON1:

  48. 第10章 实训 10.7.4实验步骤 MOV A, R2 ; 取出键码 MOV DPTR, #KEYTABLE MOVCA, @A+DPTR MOVR2, A WAITRELEASE: MOVDPTR, #OUTBIT ; 等键释放 CLR A MOVX @DPTR, A MOV R6, #10 CALLDELAY CALLTESTKEY JNZ WAITRELEASE MOV A, R2 RET START: MOVSP, #40H MOVLEDBUF, #0FFH; 显示 8.8.8.8. MOV LEDBUF+1, #0FFH MOV LEDBUF+2, #0FFH MOV LEDBUF+3, #0FFH MOV LEDBUF+4, #0 MOV LEDBUF+5, #0 MLOOP: CALL DISPLAYLED; 显示 CALL TESTKEY ; 有键入? JZ MLOOP ; 无键入, 继续显示

  49. 第10章 实训 10.7.4实验步骤 MOV DPTR, #LEDMAP MOVC A, @A+DPTR MOV LEDBUF+5, A LJMP MLOOP END 注意:固化后插入89C51插座,按0~F键应在显示块上显示出来,若不正常,检查硬件各部分直到正常为止。

More Related