《单片机原理及应用》实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《单片机原理及应用》

实验报告

2017/2018 学年第1 学期

系别计算机学院

专业软件工程

班级17软件工程班

姓名XXXXXX

学号8888888888

授课老师******

实验一:流水灯实验

1.实验目的

(1)学习编译和仿真环境使用

(2)学习P3口的使用方法

(3)学习延时子程序的编写

2实验内容

(1)通过对P3口地址的操作控制8位LED流水点亮,从而认识单片机的接口;(2)通过改变并行口输出电平控制LED灯的点亮与否,通过延时程序控制亮灯时间。

3.实验运行结果图

4.源代码

//流水灯实验

#include //包含单片机寄存器的头文件

sfr x=0xb0; //P3口在存储器中的地址是b0H,通过sfr可定义8051内核单片机

//的所有内部8位特殊功能寄存器,对地址x的操作也就是对P1口的

操作

/****************************************

函数功能:延时一段时间

*****************************************/

void delay(void)

{

unsigned char i,j;

for(i=0;i<255i++)

for(j=0;j<255j++)

; //利用循环等待若干机器周期,从而延时一段时间 }

/*****************************************

函数功能:主函数

******************************************/

void main(void)

{

while(1)

{

x=0xfe; //第一个灯亮

delay(); //调用延时函数

x=0xfd; //第二个灯亮

delay(); //调用延时函数

x=0xfb; //第三个灯亮

delay(); //调用延时函数

x=0xf7; //第四个灯亮

delay(); //调用延时函数

x=0xef; //第五个灯亮

delay(); //调用延时函数

x=0xdf; //第六个灯亮

delay(); //调用延时函数

x=0xbf; //第七个灯亮delay(); //调用延时函数

x=0x7f; //第八个灯亮delay(); //调用延时函数}

}

实验二:中断实验

1.实验目的

(1)熟悉51单片机中断初始化编程方法。

(2)掌握51单片机外部中断源的设计使用。

(3)中断处理应用程序的设计与调试技巧。

2.实验内容

通过对P3.2、P3.3引脚的电平控制,实现外部中断处理,从而控制输出口P1的输出效果变化。

3.实验运行结果图

4.源代码

/用外中断0的中断方式进行数据采集和处理

#include //包含51单片机寄存器定义的头文件

sbit S=P3^2; //将S位定义为P3.2,

/*******************************************

函数功能:主函数

******************************************/

void main(void)

{

EA=1; //开放总中断

EX0=1; //允许使用外中断

IT0=1; //选择负跳变来触发外中断

P1=0xff;

while(1)

; //无限循环,防止程序跑飞

}

/**************************************************************

函数功能:外中断T0的中断服务程序

**************************************************************/

void int0(void) interrupt 0 using 0 //外中断0的中断编号为0

{

P1=~P1; //每产生一次中断请求,P1取反一次。

}

//用外中断0的中断方式进行数据采集和处理

#include //包含51单片机寄存器定义的头文件

#define uchar unsigned char

void Delay(unsigned int i)

{

uchar j;

for(;i>0;i--)

for(j=0;j<125;j++)

{;}

}

//sbit S=P3^2; //将S位定义为P3.2,

/*******************************************

函数功能:主函数

******************************************/

void main(void)

{

uchar display[9]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsigned int a;

while(1){

EA=1; //开放总中断

EX0=1; //允许使用外中断

EX1=1;

IT0=1; //选择负跳变来触发外中断

IT1=1;

IP=0;

for(a=0;a<9;a++){

Delay(500);

P1=display[a];

}

}

}

/**************************************************************

函数功能:外中断T0的中断服务程序

相关文档
最新文档