单片机实验报告

  • 格式:doc
  • 大小:2.07 MB
  • 文档页数:43
sbit P02 = P0^2;
sbit P03 = P0^3;
sbit P04 = P0^4;
sbit P05 = P0^5;
sbit P06 = P0^6;
sbit P07 = P0^7;
sbit P10 = P1^0;
sbit P11 = P1^1;
sbit P12 = P1^2;
sbit P13 = P1^3;
实验三:跑马灯实验
一、实验目的
1.熟悉51单片机并行口的编程。
2.熟悉共阴性LED的工作特性及控制方法
3.熟悉单片机实验开发板的设计原理
4.学习单片机在系统烧录程序(在系统编程ISP)的方法
二、实验内容
1.使用汇编语言编写程序,实现数码管的跑马灯实验编写A51的汇编语言程序,编译成功后,使用ISP下载软件下载程序
之后就可以编写C语言程序了。
2,二进制转BCD码。
BINNUM EQU 30H
ORG 0000H
MOV A,#BINNUM
MOV R0£¬#10H
ACALL BINBCD1
SJMP $
BINBCD1 :MOV B,#100
DIV AB
MOV @,A
XCH A,B
MOV B,#10
DIV AB
SWAP A
2.掌握A51汇编语言的编程方法
3.领会汇编语言程序设计的思想和方法
二、实验内容
1.学习uVision集成开发环境的使用及A51编程范例
2.编写程序,完成二进制向BCD码的转换
3.编写程序,完成BCD码向ASCII码的转换
三、主要仪器设备
1.计算机
2.uVvision集成开发环境
四、实验过程及结果
1,uvision操作界面如下,首先要建立一个工程。 然后进行如下选择:
ADD A,B
INC R0
MOV @R,A
RET
END
3,BCD码转ASCLL码:
BINNUM EQU 30H
ORG 0000H
MOV A,#BINNUM
MOV R1,#10H
ACALL BINTASC
SJMP $
BINTASC: MOV A,R1
ANL A,#0FH
ADD A,#30H
MOV R1,A
sbit P00 = P0^0;
sbit P01 = P0^1;
sbit P02 = P0^2;
sbit P03 = P0^3;
sbit P04 = P0^4;
sbit P05 = P0^5;
sbit P06 = P0^6;
sbit P07 = P0^7;
sbit P10 = P1^0;
sbit P11 = P1^1;
sfr P4M1 = 0xB3;
sfr P4M0 = 0xB4;
sfr P5M1 = 0xC9;
sfr P5M0 = 0xCA;
sfr P6M1 = 0xCB;
sfr P6M0 = 0xCC;
sfr P7M1 = 0xE1;
sfr P7M0 = 0xE2;
sbit P00 = P0^0;
sbit P01 = P0^1;
2.在正确完成上一步程序后,继续编写程序调用实验三群里的显示接口函数实现将播吗开关的波动次数,显示在LED数码管上,只显示有效的位数无效的位数不显示编写好程序后使用ISP编程软件将二进制代码文件下载至实验板中运行,拨动开关观察数码管的显示
3.在正确完成第一步的基础上,继续编写程序,调用实验二整理的串口输出函数,实现将拨码开关的拨动次数从串行口输出,并调整好显示格式,使其美观易懂。下载程序后,拨动开关,使用串行口调试软件查看输出结果。串口调试软件额使用请参考12.2.2节中的有关部分
实验四单片机外部中断实验
一.实验目的
1.通过实验掌握五一单片机的中断原理
2.熟悉使用C51语言编写中断处理程序的方法
3.进一步熟悉单片机实验开发板的设计原理
4.进一步熟悉单片机在系统烧录程序(在系统编程ISP)的方法
二.实验内容
1.使用C51语言编写程序,初始化中断完成中断处理,实现对拨码开关拨动次数的技术,参照11.4节中的有关部分,在调试模式下使用软件仿真调试编写的程序,
{
u16 i;
do{
i = MAIN_Fosc / 13000;
while(--i) ; //14T per loop
}while(--ms);
}
生成HEX文件后,下载到单片机里。就会看到4个小等依次点亮,循环。
六、实验小结:
本次跑马灯实验中,进一步对单片机以及uvidion编程软件有了进一步的了解,淡然也遇到了很多问题,比如生成hex文件时找不着放在那个文件夹里,下载时寻找单片机型号上花费很多时间,在慢慢地摸索中,总算是能比较流畅的操作了。
RLC A
MOV 21H,A
MOV A,20H
RLC A
MOV 20H,A
MOV A,22H
RLC A
MOV 22H,A
MOV A,21H
RLC A
MOV 21H,A
MOV A,20H
RLC A
MOV 20H,A
SIMP $
END
分部执行后如下
最后A中数0x0c即为12.
五、实验小结
在本次试验中出现了调试结果有无得情况,经过查验是单片机型号设置有误。在实验2里,开始设置的初值为0.导致调试结果里A无变化,修改后,正常。
sfr P1M0 = 0x92; // =10--->pure input, 11--->open drain
sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
sfr P3M1 = 0xB1;
sfr P3M0 = 0xB2;
P17 = 1;
P16 = 0;
delay_ms(250);
delay_ms(250);
P16 = 1;
P47 = 0;
delay_ms(250);
delay_ms(250);
P47 = 1;
P46 = 0;
delay_ms(250);
delay_ms(250);
P46 = 1;
}
}
void delay_ms(u8 ms)
typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;
sfr P4 = 0xC0;
sfr P5 = 0xC8;
sfr P6 = 0xE8;
sfr P7 = 0xF8;
sfr P1M1 = 0x91; //PxM1.n,PxM0.n =00--->Standard, 01--->push-pull
sfr P3M1 = 0xB1;
sfr P3M0 = 0xB2;
sfr P4M1 = 0xB3;
sfr P4M0 = 0xB4;
sfr P5M1 = 0xC9;
sfr P5M0 = 0xCA;
sfr P6M1 = 0xCB;
sfr P6M0 = 0xCC;
sfr P7M1 = 0xE1;
sfr P7M0 = 0xE2;
P5M1 = 0; P5M0 = 0; //ÉèÖÃΪ׼˫Ïò¿Ú
P6M1 = 0; P6M0 = 0; //ÉèÖÃΪ׼˫Ïò¿Ú
P7M1 = 0; P7M0 = 0; //ÉèÖÃΪ׼˫Ïò¿Ú
while(1)
{
P17 = 0;
delay_ms(250);
delay_ms(250);
{
P0M1 = 0; P0M0 = 0; //ÉèÖÃΪ׼˫Ïò¿Ú
P1M1 = 0; P1M0 = 0; //ÉèÖÃΪ׼˫Ïò¿Ú
P2M1 = 0; P2M0 = 0; //ÉèÖÃΪ׼˫Ïò¿Ú
P3M1 = 0; P3M0 = 0; //ÉèÖÃΪ׼˫Ïò¿Ú
P4M1 = 0; P4M0 = 0; //ÉèÖÃΪ׼˫Ïò¿Ú
sbit P50 = P5^0;
sbit P51 = P5^1;
sbit P52 = P5^2;
sbit P53 = P5^3;
sbit P54 = P5^4;
sbit P55 = P5^5;
sbit P56 = P5^6;
sbit P57 = P5^7;
void delay_ms(u8 ms);
void main(void)
sfr P4 =;
sfr P6 = 0xE8;
sfr P7 = 0xF8;
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
RET
END 实验小结
在本实验中,由于是第一次上机操作,故出现了很多问题,比如对这么操作环境的陌生,不知道按键的意义,以及不知道该如何调试,编写的程序的正确性等。在小组同学的帮助下,以及询问老师,终于掌握了一些基本的操作,使得该实验比较的成功。
实验二:使用μVision集成开发工具设计、调试C51语言程序
三、主要仪器设备
1)计算机
2)μVision集成开发环境
四、实验过程及结果
1,程序:
ORG 0000H
LJMP START
ORG 0030H
START:MOV TMOD,#00H