单片机实验报告含仿真
单片机实验报告

unsigned int count;
void display(unsigned int d);
void delay(unsigned int n);
main()
{
second=0;
count=0;
TMOD=0x61; //T0定时器方式1 T1计数器方式2
TH1=255; TL1=255; //T2计数初值计一次即中断
}
else
{TR1=0;TR0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;} //满一分钟停止TR1
}
void time1(void)interrupt 3 using 2
{
second++;
}
void int_1() interrupt 0 using 3 //0号中断(外中断0),使用3号寄存器组
{
display(second);
}
}
void time0(void) interrupt 1 using 1
{
count++; //中断一次计一次数
if(count<1200)
{
TH0=(65536-50000)/256; //T1计数初值(65535-50000)/fosc/12 50ms
TL0=(65536-50000)%256;
outdata[2]=10; //不显示
outdata[3]=d/10000; //取最高位
outdata[4]=d/1000%10; //取次高位
outdata[5]=d/100%10; //取次次高位
outdata[6]=ቤተ መጻሕፍቲ ባይዱ/10%10; //取次低位
单片机串行通信实验报告(实验要求、原理、仿真图及例程)

《嵌入式系统原理与实验》实验指导实验三调度器设计基础一、实验目的和要求1.熟练使用Keil C51 IDE集成开发环境,熟练使用Proteus软件。
2.掌握Keil与Proteus的联调技巧。
3.掌握串行通信在单片机系统中的使用。
4.掌握调度器设计的基础知识:函数指针。
二、实验设备1.PC机一套2.Keil C51开发系统一套3.Proteus 仿真系统一套三、实验容1.甲机通过串口控制乙机LED闪烁(1)要求a.甲单片机的K1按键可通过串口分别控制乙单片机的LED1闪烁,LED2闪烁,LED1和LED2同时闪烁,关闭所有的LED。
b.两片8051的串口都工作在模式1,甲机对乙机完成以下4项控制。
i.甲机发送“A”,控制乙机LED1闪烁。
ii.甲机发送“B”,控制乙机LED2闪烁。
iii.甲机发送“C”,控制乙机LED1,LED2闪烁。
iv.甲机发送“C”,控制乙机LED1,LED2停止闪烁。
c.甲机负责发送和停止控制命令,乙机负责接收控制命令并完成控制LED的动作。
两机的程序要分别编写。
d.两个单片机都工作在串口模式1下,程序要先进行初始化,具体步骤如下:i.设置串口模式(SCON)ii.设置定时器1的工作模式(TMOD)iii.计算定时器1的初值iv.启动定时器v.如果串口工作在中断方式,还必须设置IE和ES,并编写中断服务程序。
(2)电路原理图Figure 1 甲机通过串口控制乙机LED闪烁的原理图(3)程序设计提示a.模式1下波特率由定时器控制,波特率计算公式参考:b.可以不用使用中断方式,使用查询方式实现发送与接收,通过查询TI和RI标志位完成。
2.单片机与PC串口通讯及函数指针的使用(1)要求:a.编写用单片机求取整数平方的函数。
b.单片机把计算结果向PC机发送字符串。
c.PC机接收计算结果并显示出来。
d.可以调用Keil C51 stdio.h 中的printf来实现字符串的发送。
单片机原理及应用实验报告

《单片机原理及应用》实验报告姓名:学号:班级:应用物理指导教师:日期:实验1 计数显示器一、实验目的熟悉51单片机的基本输入输出应用,掌握Proteus模块的原理图绘图方法及单片机系统仿真运行方法二、实验原理由共阴极数码管LED1和LED2、P0口、P2口,上拉电阻RP1及Vcc组成的输出电路;由按钮开关BUT、P3.7和接地点组成的输入电路,该电路在编程软件的配合下,可实现计数显示功能:可统计按钮BUT的按压次数,并将按压结果以十进制数形式显示出来;当显示值达到99后可自动从1开始,无限循环。
三、实验内容(1)观察Proteus模块的软件结构,熟悉菜单栏、工具栏、对话框等基本单元功能(2)学会选择元件、画导线、修改属性等基本操作(3)学会可执行文件加载及程序仿真运行方法(4)验证计数显示器的功能四、实验要求提交实验报告并包括如下内容:电路原理图、电路原理分析、仿真运行截图及实验小结1.实验原理图2.仿真运行截图3.实验小结通过这次实验让我认识了kell和proteus软件的基本功能,学会了用kell编写程序用proteus仿真运行。
在这次实验中同时也遇到了很多问题。
比如因为第一次使用这两个软件对界面还不太熟悉,浪费了很多的时间也产生了很多错误,但之后与同学们的交流过程中,慢慢的对这两个软件有了更深入的了解,在后期仿真的时候才能得心应手的处理问题。
这个计数显示器的实验让我进一步了解了单片机与数码管的魅力,看到了电子元件的神奇之处,只要按动按键就能让数码管的数字逐次加一,这大大激发了我的学习单片机兴趣,这次实验也会成为我以后学习单片机的奠基石,因为它打开了我认识单片机的大门,让我认识到了单片机的魅力,并让我沉浸其中。
实验2 指示灯开关控制器一、实验目的学习51单片机I/O口基本输入输出功能,掌握汇编语言的编程与调试方法。
二、实验原理输入电路由外接在P1口的8只拨动开关组成;输出电路由外接在P2口的8只低电平驱动的发光二极管组成。
重庆交通大学单片机实验报告

4.实验结果:
图 2-8 仿真结果 7 / 35
图 2-9 实验结果 8 / 35
实验三、P1 口亮灯实验
一、实验目的 通过实验了解单片机最小系统;掌握 P1 口作为输入输出方式使
用时,CPU 对 P1 口的操作方法 二、实验器材
PC 机一台 单片机开发板一台 三、实验内容
图 3-1 实验电路图
//宏定义位 P1.5
sbit led3 = P1^2;
//宏定义位 P1.2
sbit key3 = P1^6;
//宏定义位 P1.6
sbit led4 = P1^3;
//宏定义位 P1.3
sbit key4 = P1^7;
//宏定义位 P1.7
void main(void)
//主函数
{
while(1)
{
if(key1 == 0) //判断开关 K1 是否按下
led1 = 0; //如果按下,D1 点亮
else
//否则
led1 = 1; //D1 熄灭
if(key2 == 0) //判断开关 K2 是否按下
6 / 35
led2 = 0; //如果按下,D2 点亮
else
//否则
led2 = 1; //D2 熄灭
17 / 35
sbit wela=P2^7; uchar num; //共阴极数码管的段选值 uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
实验四 数码管显示实验 ........................... 17
任务一 ........................................ 17 任务二 ........................................ 19 任务三 ........................................ 20
单片机实验报告 附含说明书

第一章 DICE-5208K开发型单片机综合实验仪概述一、系统简介DICE-5208K型单片机实验系统由DICE-5208K开发型单片机综合实验箱、DICE-3000型仿真器、扩展卡和DICE-51仿真开发系统软件等组成。
是《MCS-51单片机原理与接口》、《单片机控制技术》、《C8051Fxxx高速SOC单片机原理及应用》、《EDA》、《VHDL硬件描述语言》、《CPLD/FPGA应用基础》等课程教学的配套实验设备。
新增加了几乎所有最实用、新颖的接口电路(如1 WIRE /I2C/SPI总线等)和通讯类接口实验(如USB2.0通讯/TCP/IP网络通讯/CAN总线/红外线收发等)。
可进行MCS-51、C8051F嵌入式单片机、CPLD/FPGA等课程的开放式实验教学。
二、主要特点1.该实验系统配置DICE-3000型高性能MCS-51硬件仿真器,64K数据空间,64K程序空间全部开放,不占用CPU资源,采用双CPU模式,仿真CPU和用户CPU独立运行,上位仿真软件支持汇编、C语言、PL/M语言。
可运行于WIN98/2000/NT/XP操作系统平台。
2.实验系统带有ISP在线下载电路,学生在完成实验后可脱离仿真机和PC机独立运行学生自行设计的单片机系统。
(可在线编程AT89S51/52/53系列单片机)。
3.该实验系统可扩展C8051F020嵌入式实验开发模块, 并配有DICE-EC5型USB高速通讯仿真器,通过4脚的JTAG接口可以进行非侵入式、全速的在线系统调试、仿真;集成开发环境支持Silicon Labs IDE和KEIL C软件。
4.该实验系统可扩展CPLD/FPGA模块,并配有相应的并口下载电路,轻松变成一台EDA实验开发平台。
5.该实验系统可扩展“数控式电子演示装置”,该装置是本公司的专利产品,结合上位演示软件和USB接口,可为该实验系统扩展多达十五个生动、形象、复杂的实验,其中大部分是闭环实验,实验践性非常强。
单片机原理与应用实验报告

单片机原理实验报告实验一计数显示[目的]熟悉Proteus仿真软件,掌握单片机原理图的绘制方法【实验内容】(1)熟悉Proteus仿真软件,了解软件的结构和功能(2)学习如何使用ISIS模块,学习设置图纸、选择元件、画线、修改属性等基本操作(3)了解如何加载可执行文件和运行程序仿真(4)了解Proteus在单片机开发中的作用,完成单片机电路原理图的绘制[实验步骤](1)观察Proteus软件的基本结构,如菜单、工具栏、对话框等。
(2)Proteus中绘制电路原理图,并根据表A.1将组件添加到编辑环境中(3)在Proteus中,观察仿真结果,检查电路图绘制的正确性【实验示意图】【实验源程序】#include <reg51.h>位 P3_7=P3^7;无符号字符 x1=0;x2=0 ;无符号字符数=0;无符号字符 idata buf[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};无效延迟(int时间){整数 k,j;for(;time<0;time--)for(k=200;k>0;k--)for(j=500;j<0;j--);}无效初始化(){P0=buf[x1];延迟(10);P2=buf[x2];延迟(10);}无效的主要(){在里面();而(1){x1=计数/10;x2=计数%10;P0=buf[x1];延迟(10);P2=buf[x2];延迟(10);如果(P3_7==0)// {延迟(10);而(!P3_7);如果(计数==99)计数=0;别的计数=计数+1;}}}[实验结果]阐明计数器的作用是按下K1后,数码管LED1和LED2会显示按键的按下次数, LED1代表一位, LED2代表十位。
当计数器达到99时,再次按下K1键,显示值再次从0开始。
实验2指示灯开关控制器[目的]学习如何编程和调试汇编语言【实验内容】(1)熟悉Proteus仿真软件,了解软件的结构和功能(2)学习如何用汇编语言编程(3)ISIS 模块中输入、编译和调试汇编程序(4)了解MCU程序控制原理,实现指示灯/开关控制器的预期功能[实验步骤]( 1 ) 在ISIS中画出电路原理图, 并在编辑环境中添加相应的元器件 .( 2 )在ISIS中编写汇编语言程序( 3 ) 利用ISIS 的汇编调试功能检查程序的语法和逻辑错误( 4 )观察仿真结果,检查程序和电路的正确性【实验示意图】【实验源程序】#include <reg51.h> 无效延迟(int时间){整数 k,j;for(;time<0;time--) {for(k=100;k<0;j--) for(j=500;j<0;j--); }}无效初始化(){P1=0x00;延迟(20);P1=0xff;延迟(20);P1=0x00;延迟(20);P1=0xff;延迟(20);P1=0x00;延迟(20);P1=0xff;延迟(20);}无效的主要(){在里面();P1=0x00;延迟(20);P1=0xff;延迟(20);而(1){P1=P2 ;}}[实验结果]阐明点击运行,8个LED 一起闪烁3次。
单片机实验报告内容(修改版)

实验一熟悉Keil C的在线调试一、软件调试步骤1.硬件准备:首先您必须具备THKSCM-2实验台一台,和THKL-C51仿真器,还需要一条串口线(串口线的接法是2-3/3-2/5-5也就是交叉接法,不是平行接法)。
2.软件准备:您需要准备keilc软件一套,版本最好是7.0之后的,我们产品附带光盘就包含了最新的keilc软件,如果老用户无法得到这个版本软件,可以上网寻找,也可以到keil公司的网站下载 下载,当然您还可以和我们销售联络,获得光盘。
3.系统设置:实验箱联接好电源线,串口线联接好PC机和THKL-C51仿真器,把仿真器插入单片机最小应用系统1的锁紧插座。
请注意仿真器插入方向,缺口应朝上。
4.软件设置:打开keilc软件,创建相关实验的应用项目,包括添加源文件,编译项目文件,详见以上介绍。
开始软件设置,找到图2-1所示菜单项。
图2-1 Project菜单选中以后找到图2-2所示的对话框,按照图2-2里面的图示方法,进行端口设置。
选择硬件仿真。
图2-2设置Debug选项卡进入Target设置,如图2-3。
选择串行口,波特率选择38400,这样就设置好了。
图2-3 Target设置5.开始调试按实验指导提供的方法连接好实验导线。
打开相关模块的电源开关(关闭不相关模块的电源开关),打开总电源开关。
按图2-4中的按钮开始调试。
图2-4 调试窗口这时候如果出现图2-5所示对话框,那么硬件系统应复位一次,关闭总电源开关2秒后从新打开电源。
图2-5 联接失败对话框然后按图2-5所示的"Try Again",可进入调试阶段。
如图2-6所示。
图2-6 调试窗口按图2-6 中按钮,即可运行程序。
如果想停止运行程序,应按一下THKL-C51仿真器的复位按钮,等待约2秒后,程序便停止运行,再次按图2-6中的按钮可返回到图2-4界面。
二、软件仿真根据一个实例作软件仿真的过程。
本实例指定外部存储器的起始地址和长度,将其内容赋同一值。
单片机实验报告参考

《实验一 应用系统开发过程演示》实验报告参考一.实验目的1.了解单片机应用系统的开发过程,获得感性认识。
2.了解开发箱/开发板的使用方法3.了解仿真软件的基本功能和使用方法。
二.实验环境(一) EL 型微机教学实验系统:1. 设备::北京精议达盛科技有限公司EL-MUT3多CPU 单片机/微机实验实训系统2. 软件:北京精议达盛科技有限公司8051调试软件4.0版 二.实验电路(一) EL 型微机教学实验系统实验电路(二) 仿真软件开发调试环境: 1.英国 Labcenter electronics 公司的Proteus EDA 工具软件, 2. 美国Keil 公司的µVision 集成开发环境 (二) 仿真软件实验电路:三. 操作步骤:(一)EL 型微机教学实验系统操作步骤1. 连线:P1.0~P1.7接LED1~LED82. 新建汇编语言源文件3. 另存为D:\J08X\SY1.ASM4. F3编译生成目标文件,F5进入调试:工具栏上“R ”打开寄存器窗,“H ”打开反汇编窗口F8,单步执行,观察相关寄存器窗口中有关寄存器中数据的变化。
四. 源程序(括号中为EL 型微机教学实验系统中的程序)ORG 0000H (ORG 4000H ) SJMP MAIN (LJMP MAIN) ORG 0040 H (ORG 4100H) MAIN: MOV A,#0FEH LOOP: MOV P2,A (MOV P1,A ) LCALL D_1s RL A AJMP LOOP ;以下为延时子程序 D_Is: MOV R6,#100 ;1s D10ms: MOV R5,#40 :10ms DL: MOV R4,#123 N0P DJNZ R4,$ DJNZ R5,DL DJNZ R6,D10ms RET END(二) 仿真软件开发调试环境: ◆Proteus 工具软件下, 1.新建设计 ①选取元件 A T89C51,RES,LED-RED ②在工作区放置元件,地线,电源 电阻RES 阻值200Ω,模式DIGITAL ③连线 2. 源程序设计,生成目标文件代码 “Source →Add/RemoveFiles ”新建源程序文件D:\J08X\L Y1.ASM “Source → SY1.ASM ”在文本编辑器编写源程序 通过“Source →BuildAll ”编译源程序,生成目标程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机原理及应用课程实验报告专业:班级:姓名:学号:实验一、keilC51及proteus软件的使用一、实验目的:1、掌握keil和proteus软件的基本操作2、通过具体实例掌握keil和proteus软件的使用。
二、实验原理: keil使用步骤,proteus使用步骤三、程序:四、实验结果分析:五、总结:学会了使用keil和proteus软件,掌握了利用keil和proteus软件进行仿真的步骤。
实验二、并行输入/输出接口实验一、实验目的:1、进一步熟悉keil仿真软件、proteus仿真软件的使用。
2、了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。
3、掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。
二、实验原理:MCS 51单片机的串行口在实际使用中通常用于三种情况:利用方式0 扩展并行i/0 接口:利用方式1 实现点对点的双机通信;利用方式2 或方式3 实现多机通信。
利用方式0 扩展并行i/0 接口MCS 5 1 单片机的串行口在方式0 时,若外接一个串入并出的移位寄存器,就可以扩展并行输出口;若外接一个并入串出的移位寄存器,就可以扩展并行输入口。
三、程序:#include<reg51.h>sbit P1_0=P1^0;void main(){unsigned char i;unsigned int j;SCON=0x00;i=0x01;for(;;){P1_0=0;SBUF=I;while(!TI) {i}P1_0=1;TI=0;for(j=0;j<=254;j++){;}i=i*2;if(i==0x00) i=0x01;}}四、实验结果分析:五、总结:进一步熟悉了keil仿真软件、proteus仿真软件的使用。
了解并熟悉单片机I/O口和LED灯的电路结构,学会了构建简单的流水灯电路。
掌握了C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。
实验三、定时器/计数器实验(1)—查询方式产生500us的方波一、实验目的:1、熟悉keil仿真软件、proteus的使用和C51定时程序的编写;2、了解51单片机中定时、计数的概念,熟悉51单片机内部定时/计数器的结构与工作原理;3、掌握查询方式处理定时/计数的工作过程,4、掌握定时/计数器在C51中的设置与程序的书写格式以及使用方法。
二、实验原理:通常利用定时/ 计数器来产生周期性的波形。
利用定时/ 计数器产生周期性波形的基本思想是:利用定时/ 计数器产生周期性的定时,定时时间到则对输出端进行相应的处理。
例如产生周期性的方波只需定时时间到对输出端取反一次即可。
不同的方式定时的最大值不同,如定时的时间很短,则选择方式2 。
方式2 形成周期性的定时不需重置初值;如定时比较长,则选择方式0 或方式1 ;如时间很长,则一个定时/ 计数器不够用,这时可用两个定时/ 计数器或一个定时/ 计数器加软件计数的方法。
三、程序:#include <reg51.h>sbit P1_0=P1^0;void main(){TMOD=0x02;TH0=0x06;TL0=0x06;TR0=1;for(;;){if(TF0){TF0=0;P1_0=!P1_0;}}}四、实验结果分析:五、总结:熟悉了keil仿真软件、proteus的使用和C51定时程序的编写;了解51单片机中定时、计数的概念,熟悉了51单片机内部定时/计数器的结构与工作原理;掌握了查询方式处理定时/计数的工作过程,掌握了定时/计数器在C51中的设置与程序的书写格式以及使用方法。
实验四、定时器/计数器实验(2)—中断方式产生500us的方波一、实验目的:1、熟悉keil仿真软件、proteus的使用和C51定时程序的编写;2、进一步熟悉51单片机内部定时/计数器的结构与工作原理;3、掌握中断方式处理定时/计数的工作过程。
二、实验原理从P 1.0 输出周期为500 us 的方波,只需P 1.0 每250 us 取反后一次即可。
当系统时钟为12MHz 时,定时/ 计数器TO 工作于方式2 时,最大的定时时间为256 us ,满足250us 的定时要求,方式控制字应没定为000000 1 0B (02H )。
系统时钟为12Mhz ,定时250us,计数值N 为250 ,初值X = 256 -250 =6 ,则THO = TLO =06 H 。
:三、程序:#include <reg51.h>sbit P1_0=P1^0;void main(){TMOD=0x02;TH0=0x06;TL0=0x06;EA=1;ET0=1;TR0=1;while(1);}void time0_int(void) interrupt 1{P1_0=!P1_0;}四、实验结果分析:五、总结:熟悉了keil仿真软件、proteus的使用和C51定时程序的编写;进一步熟悉了51单片机内部定时/计数器的结构与工作原理;掌握了中断方式处理定时/计数的工作过程。
实验五:串行接口实验(1)—工作方式0扩展并行IO口一、实验目的:1, 掌握串行口工作方式0的程序设计;2、熟悉51单片机串口的结构和工作原理3、掌握串口工作方式0的工作特点。
二、实验原理:MCS 51单片机的串行口在实际使用中通常用于三种情况:利用方式0 扩展并行i/0 接口:利用方式1 实现点对点的双机通信;利用方式2 或方式3 实现多机通信。
利用方式0 扩展并行i/0 接口MCS 5 1 单片机的串行口在方式0 时,若外接一个串入并出的移位寄存器,就可以扩展并行输出口;若外接一个并入串出的移位寄存器,就可以扩展并行输入口。
三、程序:#include<reg51.h>sbit P1_0=P1^0;void main(){unsigned char i;unsigned int j;SCON=0x00;i=0x01;for(;;){P1_0=0;SBUF=I;while(!TI) {i}P1_0=1;TI=0;for(j=0;j<=254;j++){;}i=i*2;if(i==0x00) i=0x01;}四、实验结果分析:五、总结:掌握了串行口工作方式0的程序设计;熟悉了51单片机串口的结构和工作原理。
掌握了串口工作方式0的工作特点。
实验六:串行接口实验(2)—双机通信一、实验目的:1、掌握串行口工作方式1的程序设计;2、进一步掌握51单片机串口的结构和工作原理3、掌握串口工作方式1的工作特点。
二、实验原理:甲、乙两机处理过程一样,程序相同。
方式选择方式1 :即8 位异步通信方式,波特率为1200bps ,既要发送,也要接收,所以串口控制字为50H 。
由于选择的是方式1, 波特率由定时/ 计数器TI 的溢出率和电源控制寄存器PCON 中的SMOD 位决定,则需对定时/ 计数器Tl 初始化。
设振荡频率为12MHz ,取SMOD=0,波特率为1200bps ,定时/ 计数器T1选择为方式2 ,则初值如下初值= 256 一foscx2SMOD /(12 × 波特率× 32 )= E6H 根据要求,定时/ 计数器T1的方式控制字为20H 。
发送过程采用查询方式,在主程序中读取PI 口的开关状态,通过串口发送;接收过程采用中断方式,接收的内容送P2 口,通过P2 口的发光二极管显示。
三、程序:#include <reg51.h>void main(){unsigned char i;SP=0x60;SCON=0X50;TMOD=0x20;TL1=0xe6;TH1=0xe6;TR1=1;EA=1;ES=1;while(1){P1=0XFF;i=P1;SBUF=i;while(TI==0);TI=0;}}void funins(void) interrupt 4{EA=0;RI=0;P2=SBUF;EA=1;}四、实验结果分析:五、总结:掌握了串行口工作方式1的程序设计;进一步掌握了51单片机串口的结构和工作原理,掌握了串口工作方式1的工作特点。
实验七:中断系统实验(1)—交通灯模拟控制一、实验目的1、掌握单片机外部中断的原理及过程。
2、掌握单片机外部中断程序的设计方法。
3、掌握单片机外部中断时中断方式的选择方法。
二、实验原理:交通灯正常运行时,可分为4 个状态:状态1 ,东西方向绿灯,南北方向红灯20 秒,状态编码“ 00100001 ” ;状态2 ,东西方向黄灯,南北方向红灯3 秒,状态编码“ 01000001 ” ;状态3 ,南北方向绿灯,东西方向红灯20 秒,状态编码“ 00010010 ” 状态4 ,南北方向黄灯,东西方向红灯3 秒,状态编码“ 0001m00 ” 。
东西发生异常时,东西通行,南北禁止,东西方向绿灯闪,南北方向红灯闪60 秒;南北发生异常时,南北通行,东西禁止,南北方向绿灯闪,东西方向红灯闪60 秒。
主程序中实现交通灯正常运行过程,两种异常用外中断0 和外中断1 管理,外接开关模拟异常发生,在中断服务程序中实现异常处理,在主程序中开放外中断0 和外中断1 ,设置为边沿触发方式。
时间单位采用500ms 信号,由定时计数器0 定时50ms ,循环10 次产生,定时计数器0 采用查询方式,主程序中设定定时计数器0 的工作方式:方式1 。
三、程序:#include <reg51.h>void delay500ms(unsigned char k);void main(void){SP=0x60;TMOD=0x01;IE=0x85;TCON=0x05;while(1){P1=0x21;delay500ms(40);P1=0x41;delay500ms(6);P1=0x12;delay500ms(40);P1=0x14;delay500ms(6);}}void int_0(void) interrupt 0{unsigned char i1,i2;i1=P1;for(i2=0;i2<60;i2++){P1=0x21;delay500ms(1);P1=0x00;delay500ms(1);}P1=i1;}void int_1(void) interrupt 2{unsigned char j1,j2;j1=P1;for(j2=0;j2<60;j2++){P1=0x12;delay500ms(1);P1=0x00;delay500ms(1);}P1=j1;}void delay500ms(unsigned char m) {unsigned char k1,k2;TH0=0x3C;TL0=0xB0;TR0=1;for(k1=0;k1<m;k1++){for(k2=0;k2<10;k2++){while(!TF0);TF0=0;TH0=0x3C;TL0=0xB0;}}}四、实验结果分析:五、总结:掌握了单片机外部中断的原理及过程。