logo资料库

单片机实验报告.docx

第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
资料共29页,剩余部分请下载后查看
《微机原理与应用》实验报告 姓名: 学号: 年级:2016 级 专业:电气工程及其自动化 2018 年春季学期
实验一 1. 功能要求 本实验在 P1 端口接 8 个 LED,并编程依次循环点亮。要求用软件延时程序控 制 LED 的亮灭时间,并能精确地计算和用软件测量延时时间。 2. 硬件原理 3. 软件程序流程 4. 程序清单
ORG 0000H LJMP MAIN ORG 0120H MOV R0,#00000001B MAIN: LOOP1: MOV P1,R0 MOV R2,#0FFH LOOP3: MOV R3,#0FFH LOOP4: NOP NOP DJNZ R3,LOOP4 DJNZ R2,LOOP3 MOV A,R0 RL A MOV R0,A LJMP LOOP1 END 5. 实验的问题及讨论 1.#0FFH 赋给 R2 R3,是用来控制延时的时间的 2.t=【255*255*(1+1+2)+255*2+1】*10^(-6)=0.26s 3.这段程序对应的机器码是: MAIN: ORG 0000H 020120 ORG 0120H 7801 8890 7AFF 7BFF 00 00 DBFC DAF8 E8 23 F8 020122 END 6. 实验心得及建议 1.Proteus 仿真软件中 P0 口出不来正确现象,但是 P1 口可以 2.写程序时要思路清晰,注意程序用的是哪个 I/O 口,硬件应该接相应的口。 实验二
1.功能要求 P0 口接 8 个灯,INT0 引脚接一下开关 KO。 K0 用于引发外部中断,在外部中断子程序中,对 K0 按下的次数进行计数, 然后以 BCD 码形式,通过 P0 口的 8 个灯输出计数结果。 2.硬件原理 3.软件程序流程 4.程序清单 ORG 0000H LJMP MAIN ORG 0003H LJMP INT0P ORG 0100H MOV P1,#00000000B MAIN:
INT0P: MOV A,#00H SETB IT0 SETB EX0 SETB EA SJMP $ ORG 0120H INC A ADD A,#00H DA A MOV P1,A RETI END 5.实验的问题及讨论 1. 指令 DA 前一定要用 ADD 或 ADDC 指令 2. 当 99+1 时,二极管显示会自动清零,因为 100 的 BCD 码为 1 0000 0000, 所以二极管都灭了。 6. 实验心得及建议 写程序的时候忘记写 MAIN 函数的储存地址了,这样程序按照顺序存储结构, 会接着存到后面中断矢量里,这样容易出错,写程序,一定要记得安排存储 的地址。 实验三 1. 功能要求 实验采用 4 位一体的数码管,用 P1 口通过驱动芯片控制段码输出信号线,P0 口通过驱动芯片控制位选线,自主选择驱动芯片,设计实现电路,并实现以 下功能: (1) 当开关 K0 接低电平时,第一位依次显示 0~F,然后第二位、第三位、 第四位,再循环回第一位。 (2) 当开关 K0 接高电平时,四位动态显示“HELP”。 2. 硬件原理
3. 软件程序流程 4.程序清单 ORG 0000H LJMP MAIN ORG 0100H MOV R4,#00H MOV R5,#00000001B JB P3.2,H1 MAIN: P0.2 接 3,P0.3 接 4*/ /*P0.0 接 1 位,P0.1 接 2,
LOW1: H1: LOW2: LOOP1: */ H: LOW3: MOV P0,#00000001B LCALL LOW2 MOV P0,#00000010B LCALL LOW2 MOV P0,#00000100B LCALL LOW2 MOV P0,#00001000B LCALL LOW2 LJMP MAIN LJMP H ORG 0150H MOV A,#00H MOV DPTR,#TABLE MOV R0,A MOVC A,@A+DPTR MOV P1,A INC R0 MOV A,R0 MOV R4,A MOV R5,P0 JB P3.2,H1 LCALL DELAY1 CJNE R0,#16,LOOP1 RET ORG 0200H MOV P0,#00000001B MOV P1,#89H LCALL DELAY2 MOV P0,#00000010B MOV P1,#86H LCALL DELAY2 MOV P0,#00000100B MOV P1,#0C7H LCALL DELAY2 MOV P0,#00001000B MOV P1,#8CH LCALL DELAY2 JNB P3.2,LOW3 LJMP H ORG 0245H MOV P0,R5 MOV A,R4 /* SUBB A,#01H */ /*低电平位选*/ /* 低电平段选*/ /*R4 存第几个数,R5 存第几位 /*高电平*/ /*高电平回低电平*/
L3: L1: DELAY1: DL1: DL2: LCALL LOOP1 MOV A,R5 RL A MOV R5,A SUBB A,#00010000B JZ L1 MOV P0,R5 LCALL LOW2 SJMP L3 LJMP LOW1 ORG 0275H MOV R7,#02H MOV R1,#0FFH MOV R2,#0FFH DJNZ R2,$ DJNZ R1,DL2 DJNZ R7,DL1 RET ORG 0290H DELAY2: MOV R3,#0FFH D2L: NOP NOP DJNZ R3,D2L RET DB /*低电平延时*/ /*高电平延时*/ TABLE: 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8E H /*制表*/ END 4. 实验的问题及讨论 仿真时发现 P0 接口显示灰色,外接了上拉电阻后 P0 口能正常工作了。虽然 实验时单片机内接了上拉电阻,但是仿真时需要自己外接。 5. 实验心得及建议 1. 修改程序要逻辑清楚,不然越改越乱 2. 延时程序有好几种方式,不要拘于一种方式 3. 学会用制表 4. 调试时单步调试更容易发现错误 实验四 1. 功能要求 1. 用 T0 定时器实现 1S 定时,控制一个 LED 亮 1 秒,灭 1 秒,并不断循环。 2. 实现一个 4 位秒表:
分享到:
收藏