单片机原理与应用课程实践实验报告.docx

上传人:b****5 文档编号:6489241 上传时间:2023-01-07 格式:DOCX 页数:147 大小:64.56KB
下载 相关 举报
单片机原理与应用课程实践实验报告.docx_第1页
第1页 / 共147页
单片机原理与应用课程实践实验报告.docx_第2页
第2页 / 共147页
单片机原理与应用课程实践实验报告.docx_第3页
第3页 / 共147页
单片机原理与应用课程实践实验报告.docx_第4页
第4页 / 共147页
单片机原理与应用课程实践实验报告.docx_第5页
第5页 / 共147页
点击查看更多>>
下载资源
资源描述

单片机原理与应用课程实践实验报告.docx

《单片机原理与应用课程实践实验报告.docx》由会员分享,可在线阅读,更多相关《单片机原理与应用课程实践实验报告.docx(147页珍藏版)》请在冰豆网上搜索。

单片机原理与应用课程实践实验报告.docx

单片机原理与应用课程实践实验报告

单片机原理及应用课程实践实验报告

实验名称:

实践一 C8051F410入门及定时器实验

班级:

姓名:

学号:

实验地点:

日期:

一、实验目的:

1、了解C8051F410单片机系统资源和结构

2、掌握C8051F410单片机定时器的原理和使用

二、实验环境:

1、C8051F410单片机系统实验板及外围设备

2、PC机、仿真器

3、信号发生器、示波器、数字万用表

三、实验内容和要求:

1.用查询或中断方式对定时器0~3进行定时应用,使用C8051F410单片机内置定时器实现八盏LED灯定时1s闪烁功能。

2.利用定时器0,1实现对P1.0引脚输入的时钟信号进行计数;

四、实验步骤:

1、构建实验思路

2、编写软件程序

3、下载硬件调试

五、实验结果与分析(含程序、数据记录及分析和实验总结等):

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

//实践一C8051F410入门及定时器实验

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

实验内容一:

灯控

定时器1查询

//#include

#include"C8051F410.h"

sbitLED=P1;//定义P1为LED1

voidPCA_Init()//关闭开门狗

{

PCA0MD&=~0x40;

PCA0MD=0x00;

}

voidTimer_Init()

{

TCON=0x40;//位6置1:

定时器1运行标志位打开

TMOD=0x22;//位5,位1置1:

定时器1工作于方式2,8位自动重装载

CKCON=0x02;//位1置1:

系统时钟进行48分频

}

voidPort_IO_Init()

{

//P0.0-Unassigned,Open-Drain,Digital

//P0.1-Unassigned,Open-Drain,Digital

//P0.2-Unassigned,Open-Drain,Digital

//P0.3-Unassigned,Open-Drain,Digital

//P0.4-Unassigned,Open-Drain,Digital

//P0.5-Unassigned,Open-Drain,Digital

//P0.6-Unassigned,Open-Drain,Digital

//P0.7-Unassigned,Open-Drain,Digital

//P1.0-Unassigned,Open-Drain,Digital

//P1.1-Unassigned,Open-Drain,Digital

//P1.2-Unassigned,Open-Drain,Digital

//P1.3-Unassigned,Open-Drain,Digital

//P1.4-Unassigned,Open-Drain,Digital

//P1.5-Unassigned,Open-Drain,Digital

//P1.6-Unassigned,Open-Drain,Digital

//P1.7-Unassigned,Open-Drain,Digital

//P2.0-Unassigned,Open-Drain,Digital

//P2.1-Unassigned,Open-Drain,Digital

//P2.2-Unassigned,Open-Drain,Digital

//P2.3-Unassigned,Open-Drain,Digital

//P2.4-Unassigned,Open-Drain,Digital

//P2.5-Unassigned,Open-Drain,Digital

//P2.6-Unassigned,Open-Drain,Digital

//P2.7-Unassigned,Open-Drain,Digital

XBR1=0x40;//位6置1:

交叉开关使能。

}

voidOscillator_Init()

{

OSCICN=0x82;//位7,位1置1:

内部振荡使能,采用32分频

CLKSEL=0x00;//采用内部振荡

}

//Initializationfunctionfordevice,

//CallInit_Device()fromyourmainprogram

voidInit_Device(void)

{

PCA_Init();//关闭看门狗

Timer_Init();//定时器的配置

Port_IO_Init();//管脚的配置

Oscillator_Init();//振荡时钟的配置

}

main()

{

unsignedcharn;//定义一个参数

Init_Device();//系统配置初始化

TL1=0xB0;//定时器1设定初值

TH1=0xB0;//定时器1自动重装载初值

TR1=1;//定时器运行标志位启动

TF1=0;//定时器1溢出位清0

P1=0x00;//p1口输出初值定为0

while

(1)

{

for(n=0;n<200;n++)//循环200次,定时1s

{

while(!

TF1);//当溢出位为1,清0

TF1=0;

}

P1=~P1;//1s时间到,p1口输出1,灯亮

}

}

实验一内容二:

计数

定时器0

/////////////////////////////////////

//GeneratedInitializationFile//

/////////////////////////////////////

#include"C8051F410.h"

//Peripheralspecificinitializationfunctions,

//CalledfromtheInit_Device()function

voidPCA_Init()

{

PCA0MD&=~0x40;//关闭看门狗

PCA0MD=0x00;

}

voidTimer_Init()

{

TCON=0x50;//位6、位4置1:

启动定时器1、0

TMOD=0x51;//位6、位4、位0置1:

定时器1设置为16位计数,定时器

0为16位定时功能;

CKCON=0x02;//位1置1:

系统48分频

TH0=0xF3;//定时器0高8位初值

TL0=0x8A;//定时器0低8位初值

TH1=0x00;//计数器1高8位清0

TL1=0x00;//计数器1高8位清0

}

voidPort_IO_Init()

{

//P0.0-Skipped,Open-Drain,Digital

//P0.1-Skipped,Open-Drain,Digital

//P0.2-Skipped,Open-Drain,Digital

//P0.3-Skipped,Open-Drain,Digital

//P0.4-Skipped,Open-Drain,Digital

//P0.5-Skipped,Open-Drain,Digital

//P0.6-Skipped,Open-Drain,Digital

//P0.7-Skipped,Open-Drain,Digital

//P1.0-T1(Timer1),Open-Drain,Analog

//P1.1-Unassigned,Open-Drain,Digital

//P1.2-Unassigned,Open-Drain,Digital

//P1.3-Unassigned,Open-Drain,Digital

//P1.4-Unassigned,Open-Drain,Digital

//P1.5-Unassigned,Open-Drain,Digital

//P1.6-Unassigned,Open-Drain,Digital

//P1.7-Unassigned,Open-Drain,Digital

//P2.0-Unassigned,Open-Drain,Digital

//P2.1-Unassigned,Open-Drain,Digital

//P2.2-Unassigned,Open-Drain,Digital

//P2.3-Unassigned,Open-Drain,Digital

//P2.4-Unassigned,Open-Drain,Digital

//P2.5-Unassigned,Open-Drain,Digital

//P2.6-Unassigned,Open-Drain,Digital

//P2.7-Unassigned,Open-Drain,Digital

P1MDIN=0xFF;//p1口不设置为模拟输入

P0SKIP=0xFF;//p0口不被交叉开关跳过

XBR1=0x60;//位6.位5置1:

交叉开关使能,T1连接到端口

}

voidOscillator_Init()

{

OSCICN=0x84;//位7、位2置1:

内部振荡8分频

}

//Initializationfunctionfordevice,

//CallInit_Device()fromyourmainprogram

voidInit_Device(void)

{

PCA_Init();//看门狗关闭

Timer_Init();//定时器配置

Port_IO_Init();//管脚配置

Oscillator_Init();//系统时钟设置

}

voidmain()

{

unsignedintx;//参数设置

unsignedchari;//参数设定

Init_Device();//系统配置初始化

TF0=0;//定时器0溢出位清0

P2=0x00;//p2口输出为0

while

(1)

{

for(i=0;i<20;i++)//循环20次,定时1s

{

while(!

TF0)//定时器0溢出位为1

TF0=0;//定时器0溢出位清。

TH0=0xF3;//定时器0设初值,20ms定时

TL0=0x8A;

}

P2=~P2;//p2口输出为1

x=TH1*256+TL1;//计数的值换算

TH1=0x00//计数器1清0

TL1=0x00;

}

}

 

实验一其他的c

定时器1中断

#include"C8051F410.h"

//Peripheralspecificinitializationfunctions,

//CalledfromtheInit_Device()function

voidPCA_Init()

{

PCA0MD&=~0x40;

PCA0MD=0x00;

}

voidTimer_Init()

{

TCON=0x40;

TMOD=0x12;

CKCON=0x02;

}

voidPort_IO_Init()

{

//P0.0-Unassigned,Open-Drain,Digital

//P0.1-Unassigned,Open-Drain,Digital

//P0.2-Unassigned,Open-Drain,Digital

//P0.3-Unassigned,Open-Drain,Digital

//P0.4-Unassigned,Open-Drain,Digital

//P0.5-Unassigned,Open-Drain,Digital

//P0.6-Unassigned,Open-Drain,Digital

//P0.7-Unassigned,Open-Drain,Digital

//P1.0-Unassigned,Open-Drain,Digital

//P1.1-Unassigned,Open-Drain,Digital

//P1.2-Unassigned,Open-Drain,Digital

//P1.3-Unassigned,Open-Drain,Digital

//P1.4-Unassigned,Open-Drain,Digital

//P1.5-Unassigned,Open-Drain,Digital

//P1.6-Unassigned,Open-Drain,Digital

//P1.7-Unassigned,Open-Drain,Digital

//P2.0-Unassigned,Open-Drain,Digital

//P2.1-Unassigned,Open-Drain,Digital

//P2.2-Unassigned,Open-Drain,Digital

//P2.3-Unassigned,Open-Drain,Digital

//P2.4-Unassigned,Open-Drain,Digital

//P2.5-Unassigned,Open-Drain,Digital

//P2.6-Unassigned,Open-Drain,Digital

//P2.7-Unassigned,Open-Drain,Digital

XBR1=0x40;

}

voidOscillator_Init()

{

OSCICN=0x82;

}

//Initializationfunctionfordevice,

//CallInit_Device()fromyourmainprogram

voidInit_Device(void)

{

PCA_Init();

Timer_Init();

Port_IO_Init();

Oscillator_Init();

}

voidmain()

{

Init_Device();

TH1=0xC1;

TL1=0xB0;

TR1=1;

EA=1;

ET1=1;

while

(1)

{

}

}

voidtimerInit()interrupt3

{

TH1=0xC1;

TL1=0xB0;

TF1=0;

P1=~P1;

}

/////////////////////////////////////

//GeneratedInitializationFile//

/////////////////////////////////////

#include"C8051F410.h"

//Peripheralspecificinitializationfunctions,

//CalledfromtheInit_Device()function

voidPCA_Init()

{

PCA0MD&=~0x40;

PCA0MD=0x00;

}

voidTimer_Init()

{

TCON=0x40;

TMOD=0x10;

CKCON=0x02;

}

voidPort_IO_Init()

{

//P0.0-Unassigned,Open-Drain,Digital

//P0.1-Unassigned,Open-Drain,Digital

//P0.2-Unassigned,Open-Drain,Digital

//P0.3-Unassigned,Open-Drain,Digital

//P0.4-Unassigned,Open-Drain,Digital

//P0.5-Unassigned,Open-Drain,Digital

//P0.6-Unassigned,Open-Drain,Digital

//P0.7-Unassigned,Open-Drain,Digital

//P1.0-Unassigned,Open-Drain,Digital

//P1.1-Unassigned,Open-Drain,Digital

//P1.2-Unassigned,Open-Drain,Digital

//P1.3-Unassigned,Open-Drain,Digital

//P1.4-Unassigned,Open-Drain,Digital

//P1.5-Unassigned,Open-Drain,Digital

//P1.6-Unassigned,Open-Drain,Digital

//P1.7-Unassigned,Open-Drain,Digital

//P2.0-Unassigned,Open-Drain,Digital

//P2.1-Unassigned,Open-Drain,Digital

//P2.2-Unassigned,Open-Drain,Digital

//P2.3-Unassigned,Open-Drain,Digital

//P2.4-Unassigned,Open-Drain,Digital

//P2.5-Unassigned,Open-Drain,Digital

//P2.6-Unassigned,Open-Drain,Digital

//P2.7-Unassigned,Open-Drain,Digital

XBR1=0x40;

}

voidOscillator_Init()

{

OSCICN=0x82;

}

voidInterrupts_Init()

{

IE=0x20;

}

 

定时器2中断

/////////////////////////////////////

//GeneratedInitializationFile//

/////////////////////////////////////

#include"C8051F410.h"

//Peripheralspecificinitializationfunctions,

//CalledfromtheInit_Device()function

voidPCA_Init()

{

PCA0MD&=~0x40;

PCA0MD=0x00;

}

voidTimer_Init()

{

TMOD=0x01;

}

voidPort_IO_Init()

{

//P0.0-Unassigned,Open-Drain,Digital

//P0.1-Unassigned,Open-Drain,Digital

//P0.2-Unassigned,Open-Drain,Digital

//P0.3-Unassigned,Open-Drain,Digital

//P0.4-Unassigned,Open-Drain,Digital

//P0.5-Unassigned,Open-Drain,Digital

//P0.6-Unassigned,Open-Drain,Digital

//P0.7-Unassigned,Open-Drain,Digital

//P1.0-Unassigned,Open-Drain,Digital

//P1.1-Unassigned,Open-Drain,Digital

//P1.2-Unassigned,Open-Drain,Digital

//P1.3-Unassigned,Open-Drain,Digital

//P1.4-Unassigned,Open-Drain,Digital

//P1.5-Unassigned,Open-Drain,Digital

//P1.6-Unassigned,Open-Drain,Digital

//P1.7-Unassigned,Open-Drain,Digital

//P2.0-Unassigned,Open-Drain,Digital

//P2.1-Unassigned,Open-Drain,Digital

//P2.2-Unassigned,Open-Drain,Digital

//P2.3-Unassigned,Open-Drain,Digital

//P2.4-Unassigned,Open-Drain,Digital

//P2.5-Unassigned,Open-Drain,Digital

//P2.6-Unassigned,Open-Drain,Digital

//P2.7-Unassigned,Open-Drain,Digital

XBR1=0x40;

}

voidOscillator_Init()

{

OSCICN=0x82;

}

//Initializationfunctionfordevice,

//CallInit_Device()fromyourmainprogram

voidInit_Device(void)

{

PCA_Init();

Timer_Init();

Port_IO_Init();

Oscillator_Init();

}

voidmain()

{

Init_Device(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1