1、建立一个文本文件
public class FileClass
{
public static void Main()
{
WriteToFile();
}
static void WriteToFile()
{
StreamWriter SW;
SW = File.CreateText(@"c:MyTextFile.txt");
SW.WriteLine("God is greatest of them all");
SW.WriteLine("This is second line");
SW.Close();
Console.WriteLine("File Created SucacessFully");
}
}
2、读文件
public class FileClass
{
public static void Main()
{
ReadFromFile(@"c:MyTextFile.txt");
}
static void ReadFromFile(string filename)
{
StreamReader SR;
string S;
SR = File.OpenText(filename);
S = SR.ReadLine();
while (S != null)
{
Console.WriteLine(S);
S = SR.ReadLine();
}
SR.Close();
}
}
public class FileClass
{
public static void Main()
{
AppendToFile();
}
static void AppendToFile()
{
StreamWriter SW;
SW = File.AppendText(@"C:MyTextFile.txt");
SW.WriteLine("This Line Is Appended");
SW.Close();
Console.WriteLine("Text Appended Successfully");
}
}
3、追加操作
C#追加文件
StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt"); sw.WriteLine("追逐理想");
sw.WriteLine("kzlll");
sw.WriteLine(".NET笔记");
sw.Flush();
sw.Close();
C#拷贝文件
string OrignFile,NewFile;
OrignFile = Server.MapPath(".")+"\\myText.txt";
NewFile = Server.MapPath(".")+"\\myTextCopy.txt";
File.Copy(OrignFile,NewFile,true);
C#删除文件
string delFile = Server.MapPath(".")+"\\myTextCopy.txt";
File.Delete(delFile);
C#移动文件
string OrignFile,NewFile;
OrignFile = Server.MapPath(".")+"\\myText.txt";
NewFile = Server.MapPath(".")+"\\myTextCopy.txt";
File.Move(OrignFile,NewFile);
C#创建目录
// 创建目录c:\sixAge
DirectoryInfo d=Directory.CreateDirectory("c:\\sixAge");
// d1指向c:\sixAge\sixAge1
DirectoryInfo d1=d.CreateSubdirectory("sixAge1");
// d2指向c:\sixAge\sixAge1\sixAge1_1
DirectoryInfo d2=d1.CreateSubdirectory("sixAge1_1");
// 将当前目录设为c:\sixAge
Directory.SetCurrentDirectory("c:\\sixAge");
// 创建目录c:\sixAge\sixAge2
Directory.CreateDirectory("sixAge2");
// 创建目录c:\sixAge\sixAge2\sixAge2_1
Directory.CreateDirectory("sixAge2\\sixAge2_1");
递归删除文件夹及文件
<%@ Page Language=C#%>
<%@ Import namespace="System.IO"%>
public void DeleteFolder(string dir)
{
if (Directory.Exists(dir)) //如果存在这个文件夹删除之
{
foreach(string d in Directory.GetFileSystemEntries(dir)) {
if(File.Exists(d))
File.Delete(d); //直接删除其中的文件
else
DeleteFolder(d); //递归删除子文件夹
}
Directory.Delete(dir); //删除已空文件夹
Response.Write(dir+" 文件夹删除成功");
}
else
Response.Write(dir+" 该文件夹不存在"); //如果文件夹不存在则提示
}
protected void Page_Load (Object sender ,EventArgs e)
{
string Dir="D:\\gbook\\11";
DeleteFolder(Dir); //调用函数删除文件夹
}
//
================================================== ====
// 实现一个静态方法将指定文件夹下面的所有内容copy到目标文件夹下面
// 如果目标文件夹为只读属性就会报错。
// April 18April2005 In STU
//
================================================== ====
public static void CopyDir(string srcPath,string aimPath)
{
try
{
// 检查目标目录是否以目录分割字符结束如果不是则添加之
if(aimPath[aimPath.Length-1] != Path.DirectorySeparatorChar)
aimPath += Path.DirectorySeparatorChar;
// 判断目标目录是否存在如果不存在则新建之
if(!Directory.Exists(aimPath)) Directory.CreateDirectory(aimPath);
// 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
// 如果你指向copy目标文件下面的文件而不包含目录请使用下面的方法
// string[] fileList = Directory.GetFiles(srcPath);
string[] fileList = Directory.GetFileSystemEntries(srcPath);
// 遍历所有的文件和目录
foreach(string file in fileList)
{
// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
if(Directory.Exists(file))
CopyDir(file,aimPath+Path.GetFileName(file));
// 否则直接Copy文件
else
File.Copy(file,aimPath+Path.GetFileName(file),true);
}
}
catch (Exception e)
{
MessageBox.Show (e.ToString());
}
}
//
================================================== ====
// 实现一个静态方法将指定文件夹下面的所有内容Detele
// 测试的时候要小心操作,删除之后无法恢复。
// April 18April2005 In STU
//
================================================== ====
public static void DeleteDir(string aimPath)
{
try
{
// 检查目标目录是否以目录分割字符结束如果不是则添加之
if(aimPath[aimPath.Length-1] != Path.DirectorySeparatorChar)
aimPath += Path.DirectorySeparatorChar;
// 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
// 如果你指向Delete目标文件下面的文件而不包含目录请使用下面的方法
// string[] fileList = Directory.GetFiles(aimPath);
string[] fileList = Directory.GetFileSystemEntries(aimPath);
// 遍历所有的文件和目录
foreach(string file in fileList)
{
// 先当作目录处理如果存在这个目录就递归Delete该目录下面的文件
if(Directory.Exists(file))
{
DeleteDir(aimPath+Path.GetFileName(file));
}
// 否则直接Delete文件
else
{
File.Delete (aimPath+Path.GetFileName(file));
}
}
//删除文件夹
System.IO .Directory .Delete (aimPath,true);
}
catch (Exception e)
{
MessageBox.Show (e.ToString());
}
}
需要引用命名空间:
using System.IO;
/**////
/// 拷贝文件夹(包括子文件夹)到指定文件夹下,源文件夹和目标文件夹均需绝对路径. 格式: CopyFolder(源文件夹,目标文件夹);
///
///
///
//--------------------------------------------------
//作者:明天去要饭QQ:305725744
//---------------------------------------------------
public static void CopyFolder(string strFromPath,string strToPath)
{
//如果源文件夹不存在,则创建
if (!Directory.Exists(strFromPath))
{
Directory.CreateDirectory(strFromPath);
}
//取得要拷贝的文件夹名
string strFolderName = strFromPath.Substring(https://www.sodocs.net/doc/ed3508310.html,stIndexOf("\\") + 1,strFromPath.Length - https://www.sodocs.net/doc/ed3508310.html,stIndexOf("\\") - 1);
//如果目标文件夹中没有源文件夹则在目标文件夹中创建源文件夹
if (!Directory.Exists(strToPath + "\\" + strFolderName))
{
Directory.CreateDirectory(strToPath + "\\" + strFolderName);
}
//创建数组保存源文件夹下的文件名
string[] strFiles = Directory.GetFiles(strFromPath);
//循环拷贝文件
for(int i = 0;i < strFiles.Length;i++)
{
//取得拷贝的文件名,只取文件名,地址截掉。
string strFileName = strFiles[i].Substring(strFiles[i].LastIndexOf("\\") +
1,strFiles[i].Length - strFiles[i].LastIndexOf("\\") - 1);
//开始拷贝文件,true表示覆盖同名文件
File.Copy(strFiles[i],strToPath + "\\" + strFolderName + "\\" + strFileName,true);
}
//创建DirectoryInfo实例
DirectoryInfo dirInfo = new DirectoryInfo(strFromPath);
//取得源文件夹下的所有子文件夹名称
DirectoryInfo[] ZiPath = dirInfo.GetDirectories();
for (int j = 0;j < ZiPath.Length;j++)
{
//获取所有子文件夹名
string strZiPath = strFromPath + "\\" + ZiPath[j].ToString();
//把得到的子文件夹当成新的源文件夹,从头开始新一轮的拷贝
CopyFolder(strZiPath,strToPath + "\\" + strFolderName);
}
}
浅析C#中的文件操作
发布时间:2003.02.13 09:46来源:赛迪网作者:王凯明
微软的.Net框架为我们提供了基于流的I/O操作方式,这样就大大简化了开发者的工作。因为我们可以对一系列的通用对象进行操作,而不必关心该I/O操作是和本机的文件有关还是和网络中的数据有关。.Net框架主要为我们提供了一个System.IO命名空间,该命名空间基本包含了所有和I/O操作相关的类。
本文将向大家介绍一些基本的文件操作方法,包括对文件系统中的目录和文件的操作,还有就是文件的读写操作等。通过运用System.IO.DirectoryInfo类和System.IO.FileInfo 类我们可以轻易的完成与目录和文件相关的操作,而通过运用System.IO.StreamReader类和System.IO.StreamWriter类我们可以方便的完成与文件的读写相关的操作。
命名空间概览
下面的表格显示了System.IO命名空间中最重要的一些类,通过运用这些类我们就能完成基本的文件操作。
运用DirectoryInfo类和FileInfo类
DirectoryInfo类和FileInfo类的基类都是FileSystemInfo类,这个类是一个抽象类,
也就是说你不可以实例化该类,只能通过继承产生其子类并实例化其子类。然而你却可以运用由该类定义的各种属性,下面的表格显示了该类已经定义了的各种属性。
DirectoryInfo类提供了创建、删除和移动目录等方法,要运用表2中的各种属性,我们首先得创建一个DirectoryInfo类的对象,然后就可以访问其各种属性了。
同时,我们还可以运用FileAttributes枚举类型值来获取和文件相关的各种属性,下面的表格就显示了该枚举类型中的各种值。
目录下的文件操作
运用DirectoryInfo类的对象我们可以轻松的实现对目录以及和目录中的文件相关的操作,假如你要获得某个目录F:\Pictures下的所有BMP文件,那么通过下面的代码就可以实现该功能。
上面的代码中我们首先创建了一个DirectoryInfo对象,然后通过调用该对象的GetFiles方法获取目录F:\Pictures下的所有以bmp为扩展名的文件,该方法返回的值是一个FileInfo类型的数组,每个元素则代表一个文件。最后,程序还列举了每个BMP文件的相关属性。
创建子目录
运用DirectoryInfo类创建子目录是非常容易的,你只要调用其中CreateSubdirectory ()方法即可,演示代码如下。
运用FileInfo类创建、删除文件
通过FileInfo类,我们可以方便地创建出文件,并可以访问文件的属性同时还可以对文件进行打开文件、关闭文件、读写文件等基本的操作。下面的代码显示了如何创建一个文本文件并且去访问其创建时间、文件的绝对路径以及文件属性等文件信息,最后程序还给出
了删除文件的方法。
理解FileInfo类的Open()方法
我们在对文件进行读写操作之前必须打开文件,FileInfo类为我们提供了一个Open()方法,该方法包含了两个枚举类型值的参数,一个为FileMode枚举类型值,另一个为FileAccess枚举类型值。通过设定这两个参数值,我们可以对文件的访问模式和操作权限进行控制。下面的两个表格分别显示了FileMode枚举类型的值和FileAccess枚举类型的值。
下面的代码显示了Open()方法的具体运用方法。
运用StreamReader类和StreamWriter类实现文件的读写操作
对文件的读写操作应该是最重要的文件操作,System.IO命名空间为我们提供了诸多文件读写操作类,在这里我要向大家介绍最常用也是最基本的StreamReader类和StreamWriter 类。从这两个类的名称我们不难发现它们都是基于流的读写操作类。
我们可以通过File类的OpenText()方法来获取一个StreamReader对象,通过该对象我们可以实现对文本文件的读操作,方法如下:
而通过调用FileInfo类的CreateText()方法我们可以获取一个StreamWriter对象,调用StreamWriter类的WriteLine()我们就可以向文本文件中写入数据了,方法如下:
总结
以上我简要地向大家介绍了C#文件操作的基本知识和方法,通过本文大家不难发现.Net 框架下I/O操作的方便性。读者在学习了本文后,如果要进行一些基本的文件操作,那么对于System.IO命名空间中的诸如DirectoryInfo类、FileInfo类、FileStream类、StreamReader类以及StreamWriter类等类一定得有基本了解并在实际应用中灵活使用之。如果要对文件操作有更进一步的控制,那么不妨去研究一下System.IO命名空间中的更为具体和细节的一些类。最后,希望本文对大家能有所帮助。
实验三单片机I/O口控制实验 一、实验目的 利用单片机的P1口作I/O口,学会利用P1口作为输入和输出口。 二、实验设备及器件 PC机一台 https://www.sodocs.net/doc/ed3508310.html,单片机仿真器、编程器、实验仪三合一综合开发平台一台 三、实验内容 1.编写一段程序,用P1口作为控制端口,使D1区的LED轮流亮。 2.编写一段程序,用P1.0~P1.6口控制LED,P1.7控制LED的亮和灭(P1.7接按键,按下时LED亮,不按时LED灭)。 四、实验要求 学会使用单片机的P1口作为I/O口,如果有时间用户也可以利用P3口作I/O口来做该试验。 五、实验步骤 1.用导线把A2区的J61接口与D1区的J52接口相连。原理如图所示。 2.先编写一个延时程序。 3.将LED轮流亮的程序编写完整并使用TKStudy ICE仿真器调试运行。 4.使用导线把A2区的J61接口的P1.0~P1.6与D1区的J52接口的LED1~LED7相连,另外A2区J61接口的P1.7与D1区的J53的KEY1相连。原理如上图所示。 5.编写P1.7控制LED的程序,并调试运行。(按下K1看是否全亮) 6.A2区J61接口的P1.7与D1区的J54的SW1相连。然后再使用TKStudy ICE仿真器运行程序,查看结果。 六、实验预习要求 仔细阅读实验箱介绍中的各个接口内容,理解该实验的硬件结构。还可以先把程序编好,然后在Keil C51环境下进行软件仿真。
七、实验参考程序 程序1: ORG 0000H LJMP Main ORG 0100H Main: MOV A,#0FFH CLR C MainLoop: CALL Delay RLC A MOV P1,A SJMP MainLoop Delay: MOV R7, #0 Loop: MOV R6, #0 DJNZ R6, $ DJNZ R6, $ DJNZ R6, $ DJNZ R7, Loop RET END 程序2: ORG 0000H LJMP Main ORG 0100H Main: JB P1.7,SETLED CLRLED: CLR P1.0 CLR P1.1 CLR P1.2 CLR P1.3 CLR P1.4 CLR P1.5 CLR P1.6 SJMP Main SETLED: SETB P1.0 SETB P1.1 SETB P1.2 SETB P1.3
单片机实验报告 实验名称:I/O口控制 姓名:张昊 学号:110404247 班级:通信2班 时间:2013.11.19 南京理工大学紫金学院电光系
一、实验目的 1、学习I/O口的使用。 2、学习延时子程序的编写和使用。 3、掌握单片机编程器的使用和芯片烧写方法。 二、实验原理 1、广告流水灯实验 (1)做单一灯的左移右移,八个发光二极管L1~L8分别接在单片机的P1.0~P1.7接口上,输出“0”的时候,发光二极管亮,开始时 P1.0->P1.1->P1.2->P1.3->...->P1.7->P1.6->...P1.0亮,重复循 环。 (2)系统板上硬件连线:把“单片机系统”A2区的J61接口的P1.0~P1.6端口与D1区的J52接口相连。要求:P1.0对应着L1,P1.1对应 L2,……,P1.7对应着L8。 P1口广告流水灯实验原理图如下
程序设计流程:流程图如下 2、模拟开关实验 (1)监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开, L1熄火。 (2)系统板上硬件连线:把“单片机系统”A2区的P1.0端口用导线连接到D1区的LED1端口上;把“单片机系统”A2区的P3.0端口用 导线连接到D1区的KEY1端口上; 实验原理图如下图
程序设计流程 二、实验内容 1、流水灯 #include
实验二并行I/O端口的使用 一、实验目的 1.进一步熟悉Keil C、proteus软件的使用方法。 2.掌握分支结构语句、运算符和数组的运用。 3.掌握LED数码管的结构和静态显示工作原理。 二、实验内容 1.程序一:按键K0~K3,用分支语句实现P0口的多值输出。 2.程序二:用循环语句实现P0口的多值输出。 3.程序三:用数组方式控制跑马灯。 4程序四:在P2口连接的LED数码管上循环显示“0”,“1”,“2”,“3”,“4”。 三、实验仿真硬件图 在Proteus软件中建立如下图所示仿真模型并保存。 图2-1 并行I/O端口应用原理图 四、编程提示 程序一:分别用if语句、if-else-if语句、switch语句来实现当按下按键K0~K3时,对应D1~D4点亮。 程序二:运用三种基本的循环语句: for语句、while语句和do-while语句,实现D1~D8循环点亮。 程序三:用数组方式控制跑马灯。将跑马灯的全部状态用数组表达,然后用循环语句依次读取数组各元素,送P0口显示。 程序四:在P2口连接的LED数码管上循环显示“0”,“1”,“2”,“3”,“4”。思路同程序一,只不过数组元素是由共阴极数码管所对应的字形码所组成。 五、调试运行 1.四个程序在proteus仿真通过。
分别用if语句、if-else-if语句、switch语句来实现当按下按键K0~K3时,对应D1~D4点亮。 if语句的一般形式: if ( 表达式1 ) { 语句组1; } if ( 表达式 2) { 语句组2; } ... if-else-if语句的一般形式: if ( 表达式 1) { 语句组1; } else if( 表达式 2) { 语句组2; } ... else if( 表达式 n) { 语句组n; } else { 语句组n+1; } switch语句的一般形式为: switch(表达式) { case常量表达式1: 语句序列1;break; case常量表达式2: 语句序列2;break; ... case常量表达式n: 语句序列n;break; default : 语句序列n+1 } 2.运用三种基本的循环语句: for语句、while语句和do-while语句,实现D1~D8循环点亮。 for语句的一般形式:
单片机并行I/O口的应用实验 一、实验目的 1、熟悉Proteus软件和Keil软件的使用方法。 2、熟悉单片机应用电路的设计方法。 3、掌握单片机并行I/O口的直接应用方法。 4、掌握单片机应用程序的设计和调试方法。 二、实验内容或原理 1、利用单片机并行I/O口控制流水灯。 2、利用单片机并行I/O口控制蜂鸣器。 三、设计要求 1、用Proteus软件画出电路原理图。要求在P1.0至P1.7口 线上分别接LED0至LED7八个发光二极管,在P3.0口线上 接一蜂鸣器。 2、编写程序:要求LED0至LED7以秒速率循环右移。 3、编写程序:要求LED0至LED7以秒速率循环左移。 4、编写程序:要求在灯移动的同时,蜂鸣器逐位报警。 四、实验报告要求 1、实验目的和要求。 2、设计要求。 3、实验程序流程框图和程序清单。 4、电路原理图。 5、实验结果 6、实验总结。 7、思考题。 五、思考题 1、编程实现LED0至LED7以十六进制计数规律亮灯? 原理图:
程序清单: /*(1)LED0~LED7以秒速率循环右移 蜂鸣器逐位报警*/ ORG 0000H MAIN:MOV A, #11111110B;赋初值 LOOP:MOV P1,A ;赋值给P1口 CPL P3.0 ;低电平有效 LCALL DELAY ;调用延时电路 SETB P3.0 ;控制蜂鸣器叫的时间间隔 LCALL DELAY RL A LJMP LOOP DELAY:MOV R7,#0FFH LOOP1:MOV R6,#0F4H LOOP2:MOV R5,#02H DJNZ R5,$ ;"$"当前的PC值,R5的内容减1不为零,继续执行该语句 DJNZ R6,LOOP2 DJNZ R7,LOOP1 RET END /*(2)LED0~LED7以十六进制计数规律亮灯*/ ORG 0000H MOV A,#0FFH LOOP: MOV P1,A LCALL DELAY DEC A CJNE A, #0FFH,LOOP MOV A, #0FFH LJMP LOOP DELAY:MOV R7, #0A7H LOOP1:MOV R6, #0ABH LOOP2:MOV R5, #10H DJNZ R5, $ ;"$"当前的PC值。R5的内容减1不为零 DJNZ R6, LOOP2 DJNZ R7, LOOP1 RET END
IO口实验: 参见基础实验1、2、3.(课件第2章单片机结构.doc) 1.输入输出综合实验(查询方式,1S由软件延时控制):要求:每一次按键,蜂鸣器响一次。同时要求LED1~LED8循环点亮。 1)初始状态或按下KEY1键(松开后保持),只点亮一只LED 灯,每隔1秒右循环显示,移到LED8后回到LED1。 LED1LED8 ………………………… LED1LED8 2)按下KEY2键(松开后保持),同时点亮相邻的两只LED 灯,每隔1秒右循环显示,移到LED8后回到LED1。 LED1LED8 3)按下KEY2键(松开后保持),同时点亮间隔的两只LED 灯,每隔1秒右循环显示,移到LED8后回到LED1。 LED1LED8
4)按下KEY2键(松开后保持),点亮一只LED灯,每隔1 秒多点亮一只LED灯,直到LED灯全亮,然后回到一只LED点亮状态循环。 LED1LED8 LED1LED8 ………………………… LED1LED8 5)按下KEY3键(松开后保持),同时点亮相邻的两只LED 灯,隔1秒后再次增加点亮相邻的两只LED灯,直到全亮后再隔1秒点亮123456,后又1234,直到全灭后重新循环。 LED1LED8 LED1LED8 ………………………… LED1LED8 ………………………… LED1LED8 6)按下KEY键(松开后保持),开始点亮LED1灯,隔1秒 后点亮23,再隔1秒点亮345,隔1秒后5678,隔1秒后8,隔1秒后76 ,隔1秒后654,隔1秒后4321,隔
1秒后1重复。 LED1LED8 LED1LED8 LED1LED8 ………………………… LED1LED8 7)按下KEY3键(松开后保持),开始点亮LED1、LED8灯, 隔1秒后点亮12、78,再隔1秒点亮123、678,直到全亮后再隔1秒点亮123、678,后又12、78,直到点亮LED1、LED8灯后重新循环。 LED8 LED1LED8 ………………………… LED1LED8 LED8 ………………………… LED8
3.2.2简单i/o口扩展实验 一、实验目的: 1.学习在单片机系统中扩展简单I/O接口的方法。 2.学习数据输出程序的设计方法。 3.学习模拟交通灯控制的实现方法。 二、实验设备: EL-MUT-III型实验箱,8051CPU板 三、实验内容: 扩展实验箱上的74LS273做为输出口,控制八个发光二极管燃灭,模拟交通灯管理。 四、实验原理: 要完成本实验,首先必须了解交通路灯的燃灭规律。本实验需要用到实验箱上八个发光二极管中的六个,即红、黄、绿各两个。不妨将L1(红)、L2(绿)、L3(黄)做为东西方向的指示灯,将L5(红)、L6(绿)、L7(黄)做为南北方向的指示灯。而交通灯的燃灭规律为:初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向,重复上述过程。各发光二极管的阳极通过保护电阻接到+5V的电源上,阴极接到输入端上,因此使其点亮应使相应输入端为低电平。 五、实验原理图 六、实验步骤: 74LS273的输出O0~O7接发光二极管L1~L8,74LS273的片选CS273接片选信号 CSO,此时74LS273的片选地址为CFA0H~CFA7H之间任选。 运行实验程序,观察LED显示情况是否与实验内容相符。 七、程序框图: 八、参考程序:T3.ASM
NAME T3 ;I/O口扩展实验一 PORT EQU 0CFA8H ;片选地址CS0 CSEG AT 0000H LJMP START CSEG AT 4100H START: MOV A,#11H ;两个红灯亮,黄灯、绿灯灭 ACALL DISP ;调用273显示单元(以下雷同) ACALL DE2S ;延时2秒 LLL: MOV A,#12H ;东西路口绿灯亮;南北路口红灯亮ACALL DISP ACALL DE10S ;延时10秒 MOV A,#10H ;东西路口绿灯灭;南北路口红灯亮 ACALL DISP MOV R2,#05H ;R2中的值为黄灯闪烁次数 TTT: MOV A,#14H ;东西路口黄灯亮;南北路口红灯亮ACALL DISP ACALL DE02S ;延时0.2秒 MOV A,#10H ;东西路口黄灯灭;南北路口红灯亮 ACALL DISP ACALL DE02S ;延时0.2秒 DJNZ R2,TTT ;返回TTT,使东西路口黄灯闪烁五次 MOV A,#11H ;两个红灯亮,黄灯、绿灯灭 ACALL DISP ACALL DE02S ;延时0.2秒 MOV A,#21H ;东西路口红灯亮;南北路口绿灯亮 ACALL DISP ACALL DE10S ;延时10秒 MOV A,#01H ;东西路口红灯亮;南北路口绿灯灭 ACALL DISP MOV R2,#05H ;黄灯闪烁五次 GGG: MOV A,#41H ;东西路口红灯亮;南北路口黄灯亮ACALL DISP ACALL DE02S ;延时0.2秒 MOV A,#01H ;东西路口红灯亮;南北路口黄灯灭 ACALL DISP ACALL DE02S ;延时0.2秒 DJNZ R2,GGG ;返回GGG,使南北路口;黄灯闪烁五次 MOV A,#03H ;两个红灯亮,黄灯、绿灯灭 ACALL DISP ACALL DE02S ;延时0.2秒 JMP LLL ;转LLL循环 DE10S: MOV R5,#100 ;延时10秒 JMP DE1 DE3S: MOV R5,#20 ;延时2秒
实验1 单片机IO口控制实验 1、P0~P3口都是并行I/O口 2、P0口和P2口,还可用来构建系统的数据总线和地址总线,所以在电路中有一个MUX,以进行转换。/P0口的MUX的一个输入端为“地址/数据”信号。/P2口的MUX的一个输入信号为“地址”信号。 3、而P1口和P3口无构建系统的数据总线和地址总线的功能,因此,无MUX。 4、在4个口中只有P0口是一个真正的双向口,P1~P3口都是准双向口。 5、P3口的口线具有第二功能,为系统提供一些控制信号。因此P3口增加了第二功能控制逻辑。这是P3口与其它各口的不同之处。 8051输出模式)、推挽输出/强上拉、仅为输入(高阻)或开漏输出功能。每个口由2个控制寄存器中的相应位控制每个引脚工作类型。 8、STC15F2K60S2系列单片机上电复位后为准双向口/弱上拉(传统8051的I/O口)模式。 9、单片机能及时地响应和处理单片机外部事件或内部事件所提出的中断请求。 10、对事件的整个处理过程,称为中断处理(或中断服务) 13、中断允许寄存器IE
CPU对中断源的开放或屏蔽,由片内的中断允许寄存器IE控制。字节地址为A8H,可位寻址。格式如下 IE对中断的开放和关闭为两级控制:总的开关中断控制位EA(IE.7位): EA=0,所有中断请求被屏蔽。 EA=1,CPU开放中断,但五个中断源的中断请求是否允许,还要由IE中的5个中断请求允许控制位决定。 SETB bit; CLR bit。 14、中断优先级寄存器IP 低优先级可被高优先级中断,反之则不能。 ?同级中断不会被它的同级中断源所中断。 ?若CPU正在执行高优先级的中断,则不能被任何中断源所中断
单片机IO口控制实验 一、实验目的 1、熟悉MCS-51的I/O结构; 2、掌握MCS-51 I/O的使用方法; 3、掌握MCS-51的中断机制。 二、实验原理 1、MCS-51单片机的硬件结构片内结构: 2、内部数据存储器(字节地址为00H~0FH):
3、SFR的名称及其分布: 4、I/O端口地址: 5、P0~P3端口功能总结: (1)P0~P3口都是并行I/O口,但P0口和P2口,还可用来构建系统的数据总线和地址总线,所以在电路中有一个MUX,以进行转换。而P1口和P3口无构建系统的数据总线和地址总线的功能,因此,无MUX。P0口的MUX的一个输入端为“地址/数据”信号。P2口的MUX的一个输入信号为“地址”信号。 (2)在4个口中只有P0口是一个真正的双向口,P1~P3口都是准双向口。 原因:P0口作数据总线使用时,需解决芯片内外的隔离问题,即只有在数据传送时芯片内外才接通;不进行数据传送时,芯片内外应处于隔离状态。为此,
P0口的输出缓冲器应为三态门。P0口中输出三态门是由两只场效应管(FET)组成,所以是一个真正的双向口。 P1~P3口,上拉电阻代替P0口中的场效应管,输出缓冲器不是三态的-准双向口。(3)P3口的口线具有第二功能,为系统提供一些控制信号。 因此P3口增加了第二功能控制逻辑。这是P3口与其它各口的不同之处。 6、P0口结构及特点: ⑴P0口结构与运作 1个输出锁存器,用于进行输出数据的锁存; 2个三态输入缓冲器,分别用于锁存器和引脚数据的输入缓冲;1个多路开关MUX,它的一个输入来自锁存器,另一个输入是地址/数据信号的反相输出。在控制信号的的控制下能实现对锁存器输出端和地址/数据线之间的切换;由两只场效应管组成的输出驱动电路。 ⑵P0口的特点 P0口是一个双功能的端口:地址/数据分时复用口和通用I/O口; 具有高电平、低电平和高阻抗3种状态的I/O端口称为双向I/O端口。P0口作地址/数据总线复用口时,相当于一个真正的双向I/O口。而用作通用I/O口时,由于引脚上需要外接上拉电阻,端口不存在高阻(悬空)状态,此时P0口只是一个准双向口; 为保证引脚上的信号能正确读入,在读入操作前应首先向锁存器写1; 单片机复位后,锁存器自动被置1; 一般情况下,如果P0口已作为地址/数据复用口时,就不能再用作通用I/O口使用;P0口能驱动8个TTL负载。 7、P1口的结构及特点: ⑴P1口结构与运作 一个数据输出锁存器,用于输出数据的锁存; 两个三态输入缓冲器,BUF1用于读锁存器,BUF2用于读引脚; 数据输出驱动电路,由场效应管VT和片内上拉电阻R组成。
单片机i o口控制实验 HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】
单片机实验报告 I/O口控制 实验名 称: 姓 名:高知明 学号: 班级:通信3 时间: 南京理工大学紫金学院电光系 一、实验目的 1、学习I/O口的使用。 2、学习延时子程序的编写和使用。 3、掌握单片机编程器使用和芯片烧写方法。 二、实验原理 1.灯闪烁实验 (1)在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。电原理图如图3.1所示。
(2)系统板上硬件连线 把“单片机系统”A2区的J61接口的P1.0- P1.6端口与D1区的J52接口相连。 (3)程序设计流程 本 实 验 程 序 设 计 可参考程序流程3.2 图3.1灯闪烁实验电路原理 图3.2程序流程图 2.广告流水灯实验 (1)做单一灯的左移右移,硬件电路图如图3.3所示,八个发光二极管L1-L8 分别接在单片机的接口上,输出“0”时,发光二极管亮,开始时P1.0→P1.1→ P1.2→P1.3→…→P1.7→P1.6→…P1.0亮,重复循环。 (2)系统板上硬件连线
把“单片机系统”A2区的J61接口的P1.0- P1.6端口与D1区的J52接口相连。要求:P1.0对应着L1,P1.1对应着L2,…,P1.7对应着L8. (3)程序设计流程 本实验程序设 计可参考程序流程,如 图3.4所示 图 3.3 P1口广告流水灯实验电 路原理图 图3.4广告流水灯实验流程 3、模拟开关实验 (1)监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示 开关状态,如果开关合上,L1亮,开关打开,L1熄灭,如图3.5所示(2)系统板上硬件连线 把“单片机系统”A2区的P1.0端口用导线连接到D1区的LED1端口上; 把“单片机系统”A2区的P3.0端口用导线连接到D1区的KEY1端口上;
实验二单片机I/O口控制实验 一、实验目的 利用单片机的P1口作I/O口,学会利用P1口作为输入和输出口。 二、实验设备及器件 PC机一台 https://www.sodocs.net/doc/ed3508310.html,单片机仿真器、编程器、实验仪三合一综合开发平台一台 三、实验内容 1.编写一段程序,用P1口作为控制端口,使D1区的LED轮流亮。 2.编写一段程序,用P1.0~P1.6口控制LED,P1.7控制LED的亮和灭(P1.7接按键,按下时LED亮,不按时LED灭)。 四、实验要求 学会使用单片机的P1口作为I/O口,如果有时间用户也可以利用P3口作I/O口来做该试验。 五、实验步骤 1.用导线把A2区的J61接口与D1区的J52接口相连。原理如图所示。 2.先编写一个延时程序。 3.将LED轮流亮的程序编写完整并使用TKStudy ICE仿真器调试运行。 4.使用导线把A2区的J61接口的P1.0~P1.6与D1区的J52接口的LED1~LED7相连,另外A2区J61接口的P1.7与D1区的J53的KEY1相连。原理如上图所示。 5.编写P1.7控制LED的程序,并调试运行。(按下K1看是否全亮) 6.A2区J61接口的P1.7与D1区的J54的SW1相连。然后再使用TKStudy ICE仿真器运行程序,查看结果。 流水灯接线图
P1.7控制LED亮灭接线图 六、实验预习要求 仔细阅读实验箱介绍中的各个接口内容,理解该实验的硬件结构。还可以先把程序编好,然后在Keil C51环境下进行软件仿真。 七、实验参考程序 程序1: ORG 0000H LJMP Main ORG 0100H Main: MOV A,#0FFH CLR C MainLoop: CALL Delay RLC A MOV P1,A SJMP MainLoop Delay: MOV R7, #0 Loop: MOV R6, #0 DJNZ R6, $ DJNZ R6, $ DJNZ R6, $ DJNZ R7, Loop RET
实验二单片机I/O口控制实验 一实验目的 学习单片机I/O口的使用方法,利用单片机的P1口作IO品口,学会利用P1口作为输入和输出口. 二实验设备和器件 IBM PC机一台 https://www.sodocs.net/doc/ed3508310.html,单片机仿真器,编程器,实验仪三合一综合开发平台一台 三实验内容 1.编写程序,用P1口作为控制端口,使D1区的LED轮流亮. 2.编写程序,用P1.0~P1.6口控制LED,P1.7控制LED的亮和灭.(P1.7接按键,按 下时LED亮,不按时LED灭) 四实验报告要求 1.画出实现上述内容硬件电路和程序。 五实验步骤 1.用导线把A2区的J61接口与D1区的J52接口相连. 2.先编写一个延时程序. 3.将LED轮流亮的程序编写完整并使用TKSTUDY ICE 调试运行. 4.使用导线把A2区的J61接口的P1.0~P1.6与D1区的J52接口的LED1~LED7相连, 另外A2区J61接口的P1.7与D1区的J53的KEY1相连. 5.编写P1.7控制LED的程序,并调试运行.(按下K1看是否全亮) 6.A2区J61接口的P1.7与D1区的J54的SW1相连.然后再使用TKSTUDY ICE运行 程序,查看结果. 实验原理图: A B 实验参考程序 程序1 ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV A,#0FEH L1:MOV P1,A RL A LCALL DELAYS SJMP L1 DELAYS:MOV R7,#10
L12:MOV R6,#199 L11:MOV R5,#250 DJNZ R5,$ DJNZ R6,L11 DJNZ R7,L12 RET END 程序2 ORG 0000H LJMP MAIN ORG 0030H MAIN: JNB P1.7,LIGHT MOV P1,#0FFH JMP MAIN LIGHT: MOV P1,#80# JMP MAIN END 七程序流程图 程序1 程序2 八实验思考 1.第二个程序中如果使用KEY1作为外部中断控制LED的亮和灭时,程序应如何 修改. 2.试用本节知识,用P1口完成流水灯,左移,右移,闪烁,全亮的程序。 九完成实验报告。
实验一 I/O 控制实验 1. 实验目的 ① 掌握基本 IO 输入输出操作指令; ② 熟练运用 keil 环境对硬件接口进行调试。 2. 预习要求 ① 理解 51 单片机 IO 的输入、输出控制方式;理解 P0、P1、P2、P3 口做为普通的 IO 口有何区别。 ② 理解实现软件延时程序设计的延时时间估算; ③ 认真预习本节实验内容,设计出器件之间的实验连接线,自行编写程序,填写实验 报告。 3. 实验设备 计算机 1 台; ZDGDTH-1 型 80C51 实验开发系统 1套; 2 号导线 4 条; 8P 数据线 1 条。 4. 基础型实验内容 ① 8 位逻辑电平显示的接口电路设计如图 1-1 所示,用 P1 口做输出口,接八位逻辑 电平显示,程序功能使发光二极管从右到左轮流循环点亮。用 8P 数据线将 D2 区 80C51/C8051F020MCU 模块的 JD1(P1 口)与 A5 区 8 位逻辑电平显示模块 JD1A5 相连。在Keil 环境运行该程序,观察发光二极管显示情况。 图 1-1 8位八位逻辑电平显示接口电路
ORG 0 LOOP: MOV A, #0FEH MOV R2,#8 OUTPUT: MOV P1,A RL A ACALL DELAY DJNZ R2,OUTPUT LJMP LOOP DELAY: MOV R6,#0 ;延时程序 MOV R7,#0 DELAYLOOP: DJNZ R6,DELAYLOOP DJNZ R7,DELAYLOOP RET END ② 8 位拨动开关的接口电路设计如图 1-2 所示,假设采用 P1 口控制 LED 显示,P2 口 接收拨码开关的输入值, 用 8P 数据线将 D2 区 80C51/C8051F020MCU 模块的 JD1 (P1 口)、JD1(P2 口)分别与A5 区八位逻辑电平显示模块 JD1A5、C6 区 8 位拨动开关 模块 JD1 C6相连。在 Keil 环境运行该程序,观察实验结果。 设置初始值 开始 设移位次数 数据输出 左移一位 延时 否 是 移位次数完 P1 口循环点灯程序框图
单片机I O口控制实验标准化管理部编码-[99968T-6889628-J68568-1689N]
单片机实验报告实验名 称: I/O口控制 姓 名: 高知明 学 号: 班 级: 通信3 时 间: 南京理工大学紫金学院电光系 一、实验目的 1、学习I/O口的使用。 2、学习延时子程序的编写和使用。 3、掌握单片机编程器使用和芯片烧写方法。 二、实验原理 1.灯闪烁实验 (1)在端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为秒。电原理图如图所示。 (2)系统板上硬件连线 把“单片机系统”A2区的J61接口的端口与D1区的J52接口相连。 (3)程序设计流程 本实验程序设计可参考程序流程
图灯闪烁实验电路原理 图程序流程图 2.广告流水灯实验 (1)做单一灯的左移右移,硬件电路图如图所示,八个发光二极管L1-L8分 别接在单片机的接口上,输出“0”时,发光二极管亮,开始时→→→→…→ →→…亮,重复循环。 (2)系统板上硬件连线 把“单片机系统”A2区的J61接口的端口与D1区的J52接口相连。要求:对应着L1,对应着L2,…,对应着L8. (3)程序设计流程 本实验程序设计可参考程序流程,如图所示 图 P1口广告流水灯实验 电路原理图 图 广告流水灯实验流程 3、模拟开关实验 (1)监视开关 K1(接在端口 上),用发光二 极管L1(接在 单片机端口上) 显示开关状 态,如果开关 合上,L1亮, 开关打开,L1 熄灭,如图所示 (2)系统板上硬件连线 把“单片机系统”A2区的端口用导线连接到D1区的LED1端口上; 把“单片机系统”A2区的端口用导线连接到D1区的KEY1端口上; (3)程序设计流程 本实验程序设计可参考程序流程,如图所示 图程序流程图 图 模拟开关 实验原理 图 三、实 验
单片机实验报告 实验名称:I/0口控制实验 姓名:刘影 学号:090401206 班级:电信(2)班 时间:2011.12.25 南京理工大学紫金学院电光系
一、实验目的 1、学习I/O口的使用; 2、学习延时子程序的编写和使用; 3、掌握单片机编程器使用和芯片烧写方法。 二、实验原理 1、灯闪烁实验 (1)在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。 (2)系统板上的硬件连线 把“单片机系统”A2区的J61接口的P1.0~P1.6端口与D1区的J52接口相连(3)程序设计流程 灯闪烁实验电路原理如图3.1.1所示。
开始 P1.0输出“0”LED灯亮 延时0.2秒 P1.0输出“1”LED灯灭 延时0.2秒 图3.1.2 程序流程图 2、广告流水灯实验 (1)做单一灯的左移右移,硬件电路如图3.3所示,八个发光二极管L1——L8分别接在单片机的P1.0~P1.7接口上,输出“0”时,发光二极管,开始时P1.0→P1.1→P1.2→。。。→P1.7→P1.6→。。。→P1.0亮,重复循环。 实验电路如图3.1.3所示。
(2)系统板上的硬件连线 吧单片机系统“A2区J61接口的P1.0~P1.6端口与D1区的J52接口相连。要求:P1.0对应着L1,P1.1对应着L2~~~。 (3)程序设计流程 开始 P1赋初值 延时1秒 P1口的各位灯一次从 右向左闪烁 延时1秒 P1口的各位灯一次从 右向左闪烁 图3.4 广告流水灯实验流程图 3、模拟开关实验 (1)监视开关K1(接在P3.0端口上),用发光二级管L1(接在单片机P1.0端口上) 显示开关状态,如果开关合上,L1亮,开关打开,L1灭。 (2)系统板上硬件连线 把“单片机系统” A2区的P1.0端口用导线连接到D1区的LED1端口上; 把“单片机系统”A2区的P3.0端口用导线连接到D1区的KEY1端口上;
2单片机IO 口控制实验实验报告 单片机IO口控制实验 一、实验目的 1、熟悉MCS-51的I/O 结构; 2、掌握MCS-51 I/O 的使用方法; 3、掌握MCS-51的中断机制。 二、实验原理 1、MCS-51单片机的硬件结构片内结构: 2、内部数据存储器: 3、SFR的名称及其分布: 4、I/O端口地址: 5、P0?P3端口功能总结: P0?P3 口都是并行I/O 口,但P0 口和P2 口,还可用来构建系统的数据总线和地址总线,所以在电路中有一个MUX 以进行转换。而P1 口和P3 口无构建系统的数据总线和地址总线的功能,因此,无MUX P0 口的MUX的一个输入端为“地址/数据”信号。P2 口的MUX勺一个输入信号为“地址” 信号。 在4个口中只有P0 口是一个真正的双向口,P1?P3 口都是准双向口。 原因:P0 口作数据总线使用时,需解决芯片内外的隔离问题,即只有在数据传送时芯片内外才接通;不进行数据传送时,芯片内外应处于隔离状态。为此。
P0口的输出缓冲器应为三态门。P0 口中输出三态门是 两只场效应管组成,所以是一个真正的双向口。 P1?P3 口,上拉电阻代替P0 口中的场效应管,输出缓冲器不是三态的一准双向口。P3 口的口线具有第二功能, 为系统提供一些控制信号。 因此P3 口增加了第二功能控制逻辑。这是P3 口与其它 各口的不同之处。 6、P0 口结构及特点:⑴P0 口结构与运作 1个输出锁存器,用于进行输出数据的锁存; 2个三态输入缓冲器,分别用于锁存器和引脚数据的输入缓冲;1个多路开关MUX它的一个输入来自锁存器,另一个输入是地址/数据信号的反相输出。在控制信号的的控制下能实现对锁存器输出端和地址/数据线之间的切换;两 只场效应管组成的输出驱动电路。 ⑵P0 口的特点 P0 口是一个双功能的端口:地址/数据分时复用口和通 用I/O 口; 具有高电平、低电平和高阻抗3种状态的I/O端口称为 双向I/O端口。P0 口作地址/数据总线复用口时,相当于一个真正的双向I/O 口。而用作通用I/O 口时,于引脚上需要外接上拉电阻,端口不存在高阻状态,此时P0 口只是一个 准双向口;为保证引脚上的信号能正确读入,在读入操作前应首
实验名称:单片机I/O口控制实验 实验目的: 利用单片机的P1口作为I/O口,学会利用P1口作为输入和输出口。 实验原理: 一、 C51的IO口系统: P0~P3端口功能总结: (1)P0~P3口都是并行I/O口,但P0口和P2口,还可用来构建系统的数据总线和地址总线,所以在电路中有一个MUX,以进行转换。 而P1口和P3口无构建系统的数据总线和地址总线的功能,因此,无MUX。P0口的MUX的一个输入端为“地址/数据”信号。 P2口的MUX的一个输入信号为“地址”信号。 (2)在4个口中只有P0口是一个真正的双向口,P1~P3口都是准双向口。 原因:P0口作数据总线使用时,需解决芯片内外的隔离问题,即只有在数据传送时芯片内外才接通;不进行数据传送时,芯片内外应处于隔离状态。为此,P0口的输出缓冲器应为三态门。P0口中输出三态门是由两只场效应管(FET)组成,所以是一个真正的双向口。 P1~P3口,上拉电阻代替P0口中的场效应管,输出缓冲器不是三态的-准双向口。 (3)P3口的口线具有第二功能,为系统提供一些控制信号。 因此P3口增加了第二功能控制逻辑。这是P3口与其它各口的不同之处。 二、C51的中断系统 单片机能及时地响应和处理单片机外部事件或内部事件所提出的中断请求。 1.五个中断请求源: (1)INT0*—外部中断请求0,由引脚INT0*输入,中断请求标志为IE0。 (2)INT1*—外部中断请求1,由引脚INT1*输入,中断请求标志为IE1。 (3)定时器/计数器T0溢出中断请求,中断请求标志为TF0。 (4)定时器/计数器T1溢出中断请求,中断请求标志为TF1。 (5)串行口中断请求,中断请求标志为TI或RI。由特殊功能寄存器TCON和SCON的相应位锁存。 2.中断控制: 中断允许寄存器IE:CPU对中断源的开放或屏蔽,由片内的中断允许寄存器IE控制。字节地址为A8H,可位寻址。 IE对中断的开放和关闭为两级控制。 总的开关中断控制位EA(IE.7位): EA=0,所有中断请求被屏蔽。 EA=1,CPU开放中断,但五个中断源的中断请求是否允许,还要由IE中的5个中断请求允许控制位决定。 IE中各位的功能如下: (1)EA:中断允许总控制位 0:CPU屏蔽所有的中断请求(CPU关中断); 1:CPU开放所有中断(CPU开中断)。
单片机I/O口的控制 一、实验目的 1、熟悉MCS-51的I/O结构; 2、掌握MCS-51 I/O的使用方法; 3、掌握MCS-51的中断机制。 二、实验原理 1、MCS-51单片机的硬件结构片内结构: 2、内部数据存储器(字节地址为00H~0FH):
3、SFR的名称及其分布: 4、I/O端口地址: 5、P0~P3端口功能总结: (1)P0~P3口都是并行I/O口,但P0口和P2口,还可用来构建系统的数据总线和地址总线,所以在电路中有一个MUX,以进行转换。而P1口和P3口无构建系统的数据总线和地址总线的功能,因此,无MUX。P0口的MUX的一个输入端为“地址/数据”信号。P2口的MUX的一个输入信号为“地址”信号。 (2)在4个口中只有P0口是一个真正的双向口,P1~P3口都是准双向口。 原因:P0口作数据总线使用时,需解决芯片内外的隔离问题,即只有在数据传送时芯片内外才接通;不进行数据传送时,芯片内外应处于隔离状态。为此,
P0口的输出缓冲器应为三态门。P0口中输出三态门是由两只场效应管(FET)组成,所以是一个真正的双向口。 P1~P3口,上拉电阻代替P0口中的场效应管,输出缓冲器不是三态的-准双向口。(3)P3口的口线具有第二功能,为系统提供一些控制信号。 因此P3口增加了第二功能控制逻辑。这是P3口与其它各口的不同之处。 6、P0口结构及特点: ⑴P0口结构与运作 1个输出锁存器,用于进行输出数据的锁存; 2个三态输入缓冲器,分别用于锁存器和引脚数据的输入缓冲;1个多路开关MUX,它的一个输入来自锁存器,另一个输入是地址/数据信号的反相输出。在控制信号的的控制下能实现对锁存器输出端和地址/数据线之间的切换;由两只场效应管组成的输出驱动电路。 ⑵P0口的特点 P0口是一个双功能的端口:地址/数据分时复用口和通用I/O口; 具有高电平、低电平和高阻抗3种状态的I/O端口称为双向I/O端口。P0口作地址/数据总线复用口时,相当于一个真正的双向I/O口。而用作通用I/O口时,由于引脚上需要外接上拉电阻,端口不存在高阻(悬空)状态,此时P0口只是一个准双向口; 为保证引脚上的信号能正确读入,在读入操作前应首先向锁存器写1; 单片机复位后,锁存器自动被置1; 一般情况下,如果P0口已作为地址/数据复用口时,就不能再用作通用I/O口使用;P0口能驱动8个TTL负载。 7、P1口的结构及特点: ⑴P1口结构与运作 一个数据输出锁存器,用于输出数据的锁存; 两个三态输入缓冲器,BUF1用于读锁存器,BUF2用于读引脚; 数据输出驱动电路,由场效应管VT和片内上拉电阻R组成。
单片机实验报告 实验名称: I/O口控制实验 姓名: 学号: 班级:通信 时间:2013.11 南京理工大学紫金学院电光系
一、实验目的 1、Keil C51软件的介绍,Proteus软件的应用,及结合使用。 2、学习I/O的使用; 3、学习延时子程序的编写和使用; 4、掌握单片机编程器使用和芯片烧写方法。 二、实验原理 1、灯闪烁实验 (1)电路原理图如图3.1.1所示。在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。电路原理图如图3.1.1所示。 图3.1.1 P1.0口闪烁实验电路原理图 (2)系统板上硬件连线 把“单片机系统”A2区的J61接口的P1.0~P1.6端口与D1区的J52接口相连。 (3)程序设计流程 本实验程序设计可参考程序流程图3.1.2
开始 P1.0输出“0”LED灯亮 延时0.2秒 P1.0输出“1”LED灯熄灭 延时0.2秒 图3.1.2 程序流程图 2、广告流水灯实验 (1)做单一灯的左移右移,硬件电路如图3.1.3所示,八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上,输出“0”时,发光二极管亮,开始时P1.0→P1.1→P1.2→P1.3→┅→P1.7→P1.6→┅→P1.0亮,重复循环。 图3.1.3 P1口广告流水灯实验电路原理图 (2)系统板上硬件连线 把“单片机系统”A2区的J61接口的P1.0~P1.6端口与D1区的J52接口相连。要求:P1.0对应着L1,P1.1对应着L2,……,P1.7对应着L8。 (3)程序设计流程 本实验程序设计可参考程序流程,如图3.1.4所示