赞
踩
《单片机原理及应用》课程实验报告
实验日期__________________ 班级__________________ 学号________________
实验台号__________________ 姓名__________________ 成绩________________
实验一 单片机汇编与C语言简单IO控制实验
【预习内容】
1.89C51单片机内部有几个并行I/O端口?用Keil C51语言如何定义这几个I/O端口?
当P1口做输入口时,在编程时须先进行什么操作?
【实验内容】
1)汇编程序:要求学生按照上课教材上例程完成,
(1)两个长度为16个字节的无符号数据相加(书上例3-26);
设片内RAM 30H单元和40H单元处有两个16字节长度的无符号数,把它们相加,将结果放于30H单元开始的位置处(假设结果不溢出)
(2)将寄存器中数据反序后保存;
设片内RAM的20H单元的内容为:(20H)=x7x6x5x4x3x2x1x0,把该单元内容反序后放入20H单元,即为:(20H)=x0x1x2x3x4x5x6x7.
2)C语言程序:
给学生例程实现: P1口控制led流水灯(从左往右逐个点亮)。
要求学生实现:根据P3.0-P3.3各引脚输入电平状态,实现控制P1口输出led流水灯(从右往左逐个熄灭,4个为一组交替亮灭,由两边到中间逐渐亮,一端向另一端逐渐亮等功能)显示。
【实验电路】
图 LED电平显示电路
【实验提示】
1.实验箱的P0、P1、P2及P3口
实验箱用P0口做数据总线及低8位地址总线,P2口做高8位地址总线,P1口和P3口是开放的,供用户使用。
2.关于reg51.h
头文件reg51.h中已对P1、P3进行了定义,因此C51程序中可直接引用它们的名称。在引用时必须大写。
3.C51语言提供如下位操作运算符
&按位与;| 按位或;~按位取反;<>位右移
4.switch/case语句
switch (表达式)
{
case 值1 : 语句1 break;
case 值2 : 语句2 break;
...
default : 语句n break;
}
5. if_else if_else多选择语句
if(条件语句1)
{ 语句1;
语句2;
…
}
else if(条件语句2)
{ 语句1;
语句2;
…
}
……
else if(条件语句n)
{ 语句1;
语句2;
…
}
else {语句m}
6.软件延时程序
(1) 不带参数延时子程序 (2) 带参数延时子程序
void delay() void delay(uint xms)
{ {
int x=20000; uint I, j;
do for(i=xms; i>0; i--)
{ x=x-1; } for(j=110; j>0; j--);
while(x>1); }
}
【实验程序】
#include
#define uchar unsigned char
#define uint unsigned int
void delay_ms(uint ms); /*延时函数声明*/
uint i,j;
/*单片机实验一 花样流水灯*/
void delay_ms(uint ms) /*延时函数*/
{
for(i=ms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
uchar a,b,c;
uint k;
P3=0xff;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。