单片机原理实验报告
学生姓名 所在班级 实验组成员 实验成绩 吴双双
电子2班 吴炜 吴梅梅 实验一 使用 C 语言实现 A 口作为输入口、B 口作为输出口
【实验目的】
掌握利用 C 语言来实现 A 口作为输入口、B 口作为输出口的方法。 【实验设备】
1. 装有 Windows 系统和 μ’nSP? IDE 集成开发环境的 PC 机一台,μ’nSP?十六位单片机实验箱一 个。
2. 本实验用到的实验箱硬件模块为:SPCE061A 核心及周边电路模块(包含 32 个 I/O 口),发光二 极管电路模块,高低电平发生按键电路模块。 【实验要求】
1. 编程要求:编写 C 语言程序。
2. 实现功能:IOA 口低八位接键盘,IOB 口低八位接 8 个发光二极管,按下按键,控制点亮对应的发光二极管。
3. 实验现象:不同的发光二极管点亮表示有不同的键按下。当第一个按键按下时,第一个发光二 极管点亮,第 i(1≤i≤8)个按键按下时,第(1≤i≤8)个发光二极管点亮。 【实验原理】
程序流程图:
【实验结果】 1、源程序清单:
#include%unsigned int KeyScan(void); void Delay(void); int main(void) {
Unsigned int uiKey; *P_IOA_Dir=0x0000; *P_IOA_Attrib=0x0000; * P_IOA_Data=0x0000;
*P_IOB_Dir=0xffff; *P_IOB_Attrib=0xffff; * P_IOB_Data=0x0000;
while(1) {
uiKey=KeyScan(); if(uiKey!=0) {
* P_IOB_Data=uiKey; }
*P_Watchdog_Clear=0x0001; } }
2、程序运行结果:
unsigned int KeyScan(void)
{
unsigned int uiData; unsigned int uiTemp; uiData=*P_IOA_Data; uiData=uiData&0x00ff; if(uiData1=0) {
Delay();
uiTemp=*P_IOA_Data; uiTemp=uiTemp&0x00ff; if(uiData1=uiTemp) uiData=0;
}
return uiData; }
void Delay(void) {
unsigned int uiCount;
for(uiCount=0;iCount<=3000;uiCount++) {
*P_Watchdog_Clear=0x0001; } }
现象文字描述:当按下按键时,对应的二极管发光。当第一个按键按下时,第一个发光二 极管点亮。
【实验总结】
1、虽然老师在理论课时已经讲过实验的相关内容,但在实践时还是感到手足无措。但所幸老师耐心的为我们讲解演示了实验,让我们最终完成了实验。
2、实践是检验真理的唯一标准,学习只有多动手才能深刻的理解。实验不仅锻炼了我们的动手能力,也培养了同学的协作能力。
实验二定时器 Timer A/B
【实验目的】
1. 通过实验熟悉定时器 Timer A/B 的工作原理。
2. 掌握预置数单元 P_TimerA/B_Data 和定时控制单元 P_TimerA/B_Ctrl 的设置方 3. 掌握定时器 Timer A/B 的编程方法。 【实验设备】
1. 装有 Windows 系统和 μ’nSP? IDE 集成开发环境的 PC 机一台,μ’nSP?十六位单片机实验箱一 个。
2. 本实验用到的实验箱硬件模块为:SPCE061A 核心及周边电路模块(包含 32 个 I/O 口),发光 二极管电路模块。 【实验要求】
1. 编程要求:编写一个汇编语言程序。
2. 实现功能:设置不同的计数初值、不同的占空比和不同的时钟源,IOB8 同时和一个发光二极管连接,用户可以通过观察二极管点亮的持续时间和熄灭持续的时间。
3. 实验现象:计数初值不同、占空比不同、时钟源不同,发光二极管的亮灭状态变化就不同。 【实验原理】
程序流程图:
【实验结果】