导航
当前位置:首页 > 摘抄

单片机实验报告的心得体会(单片机实验报告心得体会与建议)

单片机实验报告的心得体会(单片机实验报告心得体会与建议)

单片机实训心得?

实训报告总结~

高职高专教育培养的是技术应用型人才,学校为了培养我们学生的创新精神和和工程实践能力,提高我们的综合素质,故在底13周带领全校学生进行为期一周的实训,在时间中互相学习和进步。

现在我们已步入大二下学期,经过两年的在校学习,对我们计算机控制专业有了比较全面的认识和理解,但在校期间,一直忙于理论知识的学习,没能有机会走出校园,真正切身感受本专业的实际应用。

所以在实训之前,本专业对我来说是比较抽象的,但通过这次实训,我们揭开了她神秘的面纱,离我们不再遥远

第一天的实训,我们去了深圳艾克瑞电气有限公司,在去公司之前,公司的史总经理特地抽空来到本班,对艾克瑞公司以及他们公司所开发研究的产品进行了一系列的讲解。

所谓“艾克瑞”也就是根据英文“XRAY”直翻译过来的,也就是生产X光。

通过他的讲解,我学到了很多东西,比如说X线的产生,X线的特点以及组成等等。

X光机主要是用于医疗机构,我们都知道X光的医疗效果是很显著的,可见它的发明及应用,对于我们人类生活,作出了多么巨大的贡献。

第二天我们同样去了艾克瑞公司,哪天让我真正地做到了学以致用,更学到了很多做人的道理,对我来说受益非浅。

因为做开发研究的地方都是没有空调的,温度很高,看着那些技术人员流着满身大汗仍然 对自己的工作乐此不疲,我真的很感动也很钦佩。

除此之外,我还学会了如何更好地与别人沟通,如何更好地去陈述自己的观点,如何说服别人认同自己的观点。

第一次亲身感受了所学知识与实际的应用,理论与实际的相结合,让我大开眼界。

第四天,我们去了深圳百事可乐公司,坐了一个小时左右的车去到那里,到达那里后给我的第一印象就是:规模庞大。

不愧是世界品牌。

那里的建筑也主要是以蓝,白为主,真正的体现了了百事可乐的清爽,舒服的意念。

通过公司里的工作人员的讲解,知道了百事已经有109年的历史了,听到这里,真的很让我惊讶

1898年8月28日,是百事可乐“PEPSI-COLA”诞生的日子。

这是每一个关爱百事可乐的人们都引以为骄傲且不会忘却的日子。

一百多年来,百事可乐在喧嚣,纷乱,竞争的氛围中,随着时代的步伐,与美国和世界一起成长壮大。

遗憾的是,由于停电的关系,我们没能参观到他们整个的生产过程,只是参观了一下他们的重要生产线。

真的不能简单以一个“规模庞大”的词来形容的。

在参观的过程中,我们知道了瓶装可乐可以每分钟生产600多瓶,而罐装可乐,甚至每分钟可生产1000多瓶,真的很不可思议。

“纸上得来终觉浅,绝知此事要躬行

在短暂的实习过程中,让我深深的感觉到自己在实际运用中的专业知识的匮乏,刚开始的一段时间里,对一些工作感到无从下手,茫然不知所措,这让我感到非常的难过。

在学校总以为自己学的不错,一旦接触到实际,才发现自己知道的是多么少,这时才真正领悟到“学无止境”的含义。

“千里之行,始于足下”,这是一个短暂而又充实的实习,我认为对我走向社会起到了一个桥梁的作用,过渡的作用,是人生的一段重要的经历,也是一个重要步骤,对将来走上工作岗位也有着很大帮助。

突然想起鲁迅先生的一句话:这里本来没有路,只是走的人多了,也便成了路。

生活的路呢

生活的路也是人走出来的,每个人一生总要去很多陌生的地方,然后熟悉,而接着又要启程去另一个陌生的地方。

作为初涉社会的开端,这里有许多回忆和联想,面对残酷的现实社会,每个人都无法选择逃避,除了勇敢面对,我们也无从选择

走向明天,我依然走我自己

不再茫然…

c语言实验报告心得

c语言实验心得

1、只有频繁用到或对运算速度要求很高的变量才放到data区内,如for循环中的计数值。

2、其他不频繁调用到和对运算速度要求不高的变量都放到xdata区。

3、常量放到code区,如字库、修正系数。

4、逻辑标志变量可以定义到bdata中。

在51系列芯片中有16个字节位寻址区bdata,其中可以定义8*16=128个逻辑变量。

这样可以大大降低内存占用空间。

定义方法是:bdata bit LedState;但位类型不能用在数组和结构体中。

5、data区内最好放局部变量。

因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率。

当然静态局部变量除外,其内存使用方式与全局变量相同;6、确保程序中没有未调用的函数。

在Keil C里遇到未调用函数,编译器就将其认为可能是中断函数。

函数里用的局部变量的空间是不释放,也就是同全局变量一样处理。

这一点Keil做得很愚蠢,但也没办法。

7、如果想节省data空间就必须用large模式。

将未定义内存位置的变量全放到xdata区。

当然最好对所有变量都要指定内存类型。

8、使用指针时,要指定指针指向的内存类型。

在C51中未定义指向内存类型的通用指针占用3个字节;而指定指向data区的指针只占1个字节;指定指向xdata区的指针占2个字节。

如指针p是指向data区,则应定义为:char data*p;还可指定指针本身的存放内存类型,如:char data*xdata p;其含义是指针p指向data区变量,而其本身存放在xdata区。

以前没搞过C51,大学时代跟单片机老师的时候也是捣鼓下汇编,现在重新搞单片机,因为手头资料不多,找到一些C51的程序,发现里面有这些关键字,不甚明了,没办法只好找了下,发现如下描述:

从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率(此问题将在后面专门讲述)。

与ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模式,各种不同的模式对应不同的实际硬件系统,也将有不同的编译结果。

在51系列中data,idata,xdata,pdata的区别

data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。

idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同。

idata是用类似C中的指针方式访问的。

汇编中的语句为:mox ACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好)

xdata:外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。

pdata:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movx ACC,@Rx读写。

这个比较特殊,而且C51好象有对此BUG,建议少用。

但也有他的优点,具体用法属于中级问题,这里不提。

三、有关单片机ALE引脚的问题单片机不访问外部锁存器时ALE端有正脉冲信号输出,此频率约为时钟振荡频率的1\/6.每当访问

外部数据存储器是,在两个机器周期中ALE只出现一次,即丢失一个ALE脉冲.\"这句话是不是有毛

病.我觉得按这种说法,应该丢失3个ALE脉冲才对,我一直想不通是怎么回事,希望大虾们帮帮我.

小弟感激涕零.

答:

其他所有指令每6个机器周期发出一个ALE,而MOVX指令占用12个机器周期只发出一个ALE

四、如何将一个INT型数据转换成2个CHAR型数据

经keil优化后,char1=int1\/256,char2=int1%256或char1=int1>>8,char2=int1&0x00ff效率是一样的。

五、在KEIL C51上仿真完了,怎样生成HEX文件去烧写

右键点项目中Target 1,选第二个,在OUTPUT中选中CREAT HEX

六、typedef 和#define 有何不同?typedef 和#define 有何不同》》》如

typedef unsigned char UCHAR;define unsigned char UCHAR;typedef命名一个新的数据类型,但实际上这个新的数据类型是已经存在的,只不过是定义了

一个新的名字.

define只是一个标号的定义.

你举的例子两者没有区别,但是#define还可以这样用

define MAX 100

define FUN(x)100-(x)

define LABEL

等等,这些情况下是不能用typedef定义的

七、请问如何设定KELC51的仿真工作频(时钟)

用右键点击左边的的target 1,然后在xtal一栏输入

八、不同模块怎样共享sbit变量,extern不行?把SBIT定义单独放到一个.H中,每个模块都包含这个.h文件

九、C51中对于Px.x的访问必须自己定义吗

是的。

如sbit P17=0x97;即可定义对P1.7的访问

十、SWITCH()语句中表达式不可以是位变量对吗

可以用位变量:

include

include

void main()

{

bit flag;flag=0;switch(flag)

{

case '0':{printf(\"0\\n\");break;}

case '1':{printf(\"1\\n\");break;}

default:break;}

}

bit 变量只有两种状态,if 语句足够啦,!十一、const常数声明占不占内存

const 只是用来定义“常量”,所占用空间与你的定义有关,如:

const code cstStr[]={\"abc\"};占用代码空间;而如:

const char data cstStr[]={\"abc\"};当然占用内存空间。

另外,#define 之定义似乎不占用空间。

十二、philips的单片机P89C51RD+的扩展RAM在C51中如何使用

试一试将auxr.1清0,然后在c语言中直接声明xdata类型的变量

十三、BUG of Keil C51

程序中用如下语句:

const unsigned char strArr[]={\"数学\"};结果发现strArr[]内容为 {0xCA,0xD1,0xA7},真奇怪

凡是有0xfd,则会通通不见了,所以只能手工输入内码了,例如 uchar strArr[]=

{0xCA,0xfd,0xd1,0xa7}(用Ultraedit会很方便)。

十四、Keil C51中如何实现代码优化

菜单Project下Option for target\"Simulator\"的C51.

看到Code optimization了吗

十五、请教c的

和~符号有甚区别

是逻辑取反,~是按位取反。

十六、c51编程,读端口,还要不要先输出1

我怎么看到有的要,有的不要,请高手给讲讲,到底咋回事

谢了

要输出1的,除非你能保证之前已经是1,而中间没有输出过其他值。

十七、当定时器1(T1)用于产生波特率时,P3^5还是否可以用作正常的I\/O口呢

p3.5完全可以当普通的io使用

十八、C51中 INT 转换为 2个CHAR

各位高手:

C51中 INT 转换为 CHAR 如何转换诸如:

X=LOW(Z);Y=HIGH(Z);答:

x=(char)z;y=(char)(z>>8);十九、如果我想使2EH的第7位置1的话,用位操作可以吗

现在对位操作指令我一些不太明白请各位多多指教:

如 SETB 07H 表示的是20H.7置1,对吗

(我在一本书上是这么看到的)

那么如果我想使2EH的第7位置1的话,象我举的这个例子怎么表示呢

谢谢

SETB 77H

setb(2eh-20h)*8+7

20h-2fh每字节有8个可位操作(00h-7fh),其它RAM不可位直接操作

二十、char*addr=0xc000 和char xdata*addr=0xc000有何区别

char*addr=0xc000;char xdata*addr=0xc000;除了在内存中占用的字节不同外,还有别的区别吗?char*addr=0xc000;是通用定义,指针变量 addr 可指向任何内存空间的值;char xdata*addr=0xc000;指定该指针变量只能指向 xdata 中的值;后一种定义中该指针变量(addr)将少占用一个存储字节。

uchar xdata*addr=0xc000;指针指向外ram;如果:data uchar xdata*addr=0xc000;指针指向外ram但指针本身存在于内ram(data)

以此类推可以idata uchar xdata*addr=0xc000;pdata uchar xdata*addr=0xc000;data uchar idata*addr=0xa0;二十一、while(p1_0)的执行时间

假设,P1_0为单片机P1口的第一脚,请问,

while(P1_0)

{

P1_0=0;}

while!P1_0)

{

P1_0=1;}

以上代码,在KEIL C中,需要多长时间,执行完。

能具体说明while(P1_0)的执行时间吗

仿真运行看看就知道了,

我仿真了试了一下,约14个周期

二十二、怎样编写C51的watchdog程序

各位大虾,我用KEIL C51 编写了一个带外部开门狗的程序,可程序无法运行起来,经过查

找,发现程序在经过C51编译后,在MAIN()函数的前部增加了一端初始化程序,等到进入

主程序设置开门狗时,开门狗已经时间到,将我的程序复位了,请问我怎样才能修改这一端

初始花程序,使他一运行,就设置开门狗

可以在startup.a51中加入看门狗刷新指令,当然用汇编,然后重新编译startup.a51

将他和你的程序连接即可。

新的startup.a51会自动代替系统默认的启动模块。

二十三、keil C51 怎样把修改的startup.a51 加到工程文件中

直接加入即可

注意不要改动?STACK,?C_START,?C_STARTUP等符号。

startup.a51直接加入项目,不用修改也可。

可在内面自己修改汇编的一些限制或堆栈指针。

二十四、关于波特率的设置

我在设定串口波特率时发现一个问题:在晶体震荡器为11.0592MHz时,若设9600BPS的话,

TH1=0XFD,TL1=0XFD,而要设19200BPS的话,TH1、TL1有否变化,如果没变,为什么

如果变了,又为什么

(因为我看书上俩个是一样的),希望大家点拨。

答:

当电源控制寄存器(PCON)第BIT7(OD)为1时波特率加倍。

TH1和TL1的值不变.

二十五、如何在C中声明保留这部分RAM区不被C使用

我不知道在C源程序中怎么控制这个,但在汇编程序中加入下面一段就行:

DSEG AT 20H

AA:DS 10

这样C51就不会占用20H-29H了

或者在c51里这样定义:

uchar data asm_buff[10]_at_0x20;二十六、问浮点运算问题

我在用C51时发现它对传递浮点参数的个数有限制,请问:

1)参数是以全局变量的形式传递的,请问以全局变量的形式传递的参数也有限制吗

2)这种传递浮点参数的限制有多少呢

3)float*float的结果是float类型还是double类型?能否直接赋值给float类型的变量

答:

由于KEIL C51的参数传递是通过R0-R7来传递的,所以会有限制。

不过KEIL提供了一个编译参数,可以支持更多参数的传递。

具体

的内容见KEIL的PDF文档。

我建议你把多个要传递的参数定义到指针或结构体中去,传递参

数通过指针或结构进行,这样好一些。

第3个问题回答是YES,你自己试试不就知道了。

二十七、如何在某一个地址定义ram

用_at_命令,这样可以定位灵活一点的地址

uchar xdata dis_buff[16]_at_0x6020;定位RAM

将dis_buff[16]定位在0x6020开始的16个字节

二十八、keil c中,用什么函数可以得到奇偶校验位

例如32位数据,将四个字节相互异或后检查P即可,若耽心P被改变,可用内嵌汇编。

include

unsigned char parity(unsigned char x){

x^=x;if(P)return(1);else return(0);}

unsigned char parity2(unsigned int x){

pragma asm

mov a,r7

xrl ar6,a

pragma endasm

if(P)return(1);else return(0);}

单片机最小系统焊接实训心得体会的范文

系统以AT89S51 为核心部件,利用软件编程,通过键盘控制和液晶显示实现了密码锁的功能、报警功能,并能防止多次试探密码,能实现本设计题目的基本要求和发挥部分。

尽量做到硬件电路简单稳定、减小电磁干扰和其他环境干扰,充分发挥软件编程的优点,减小因元器件精度不够引起的误差。

本设计方案的智能密码锁,具有造价低,工作可靠,功能多,智能化,实用性强等特点,在许多场合都能应用,并且控制智能化、灵活。

由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。

例如:扩展红外探测技术,指纹识别技术,语音识别技术,图像识别技术等等。

这样更能满足社会的发展和人民的需求。

随着计算机科学及传感技术的不断发展,我们相信在不久的将来密码锁和相关技术将发展成熟,为提高人们的生活质量中发挥更大的作用。

踉踉跄跄地忙碌了两个月,我的毕业设计课题也终将告一段落。

设计实物也基本达到预期的效果,但由于能力和时间的关系,总是觉得有很多不尽人意的地方,譬如功能不全、外观粗糙…数不胜数。

但我可以自豪的说,这里面的每一段代码,都有我的劳动。

当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。

我相信其中的酸甜苦辣最终都会化为甜美的甘泉。

毕业设计,也许是我大学生涯交上的最后一个作业了。

想借此机会感谢一直以来给我帮助的所有老师、同学,你们的友谊是我人生的财富,是我生命中不可或缺的一部分。

我的毕业指导老师吴慧峰老师,她一直都以一位长辈的风范来容谅我的无知和冲动,给我不厌其烦的指导。

在此,特向她道声谢谢。

这次做论文的经历也会使我终身受益,我感受到做论文是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破,那也就不叫论文了。

希望这次的经历能让我在以后学习中激励我继续进步。

微机原理与接术 实验心得

微机原理与接术的课程实验历时大半个学期,通过自己编写、运行程序,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。

前四个简单程序设计,加深了我们对初学的汇编语言指令的熟悉和理解,汇编语言直

接描述机器指令,比机器指令容易记忆和理解。

通过学习和使用汇编语言,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。

不仅巩固了书本所学的知识,还具有一定的灵活性,发挥了我们的创造才能。

后面几个实验是并行输入输出接口8255和计数器8253的功能的操作,加深了我们对硬件的熟悉,锻炼了动手能力,发挥创造才能。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在自己的思考以及和同学的讨论中,终于迎刃而解。

急求单片机学习心得一份悬赏20

很多网友的空间里面写的都是自己的心得

以关键词心得 读书笔记体会

等等在百度里面搜

求一篇发动机拆装实习报告,或者心得体会。

最少500字

实习报告格式和基本要求

(一)要求观点明确,论据详实,条理清楚,文字简练,格式规范,具有鲜明的针对性和创新性,正文字数一般不少于2000字。

(二)内容提纲

前言

一、实习目的

二、实习时间

三、实习地点

四、实习单位和部门,实习单位的生产(经营)工作情况、管理情况及对员工的要求

五、实习内容:实习的项目、程序、方法、计算成果及示意图,按实习顺序逐项编写;六、实习总结:实习中运用所学知识分析解决问题的情况,实习的心得体会,意见和建议

七、对母校教学实习工作的建议

(三)格式

标题(三号黑体)应准确、简洁,能概括文章的要旨,一般不超过20个汉字,必要时可加副题。

标题中应避免使用非公知公用的缩略语、字符、代号以及结构式和公式。

正文的层次标题,应简短明了,不要超过15个字,不用标点符号,文内层次的划分及编号一律使用“一、(一)1.(1)”编序。

(一级标题用四号黑体,二级标题用四号楷体,以下层次的所有标题用小四宋体)

正文内容:字体—宋体;大小—小四;1.5倍行间距。

左右页边距:自动

(四)表格应采用三线表,可适当加注辅助线。

(五)插图(含照片)应采用计算机制作,插图下方应注明图序和图名。

照片要主题鲜明、层次清晰、反差合适、剪裁恰当。

单片机实验报告求16个数的平均值

是做实物还是用protues仿真就行 这个是简单的单片机驱动数码设计

单片机最小系统实训报告

单片机作为控制系统中最常见的芯片,所以学习并学会应用是我们学习自动化专业学生所应该具备的基本技能。

通过对单片机最小系统的研究,掌握单片机个引脚的基本功能,理解单片机工作过程及工作原理,以及与各种外部器件的连接,能够自己制作一个单片机最小系统的开发板并为其设置一个用于下载程序的串口对其进行下载程序并进行调试使我们所学知识与实践结合起来。

一、方案设计、

1.设计方案思路

2.设计框图

二、电路设计

1.电源电路

2.振荡电路

3.复位电路

4.RS232串口电路

5.蜂鸣器电路

6.八段数码管显示电路

7.LED电路

单片机中断实验

include<reg52.h>\/包含52单片机寄存器定义的头文件

函数功能:主函数

void main(void)

{

EA=1;开放总中断

EX0=1;允许使用外中断

TF0=0;选择负跳变来触发外中断

P0=0xff;关闭所有P0口的LED灯

while(1);无限循环,

}

函数功能:外中断T0的中断服务程序

void int0(void)interrupt 0\/外中断0的中断编号为0

{

while(TF0=1)

TF0=0;P0=~P0;每产生一次中断请求,P1取反一次。

}

这是一个外中断LED实验,你看看吧

我想写一篇关于单片机方面的论文,需要那些资料,还有告诉我一点思路

题目 交通灯控制系统的设计

一、课程设计的目的与要求

1、课程设计目的:

(1)进一步理解和消化书本知识,运用所学知识和技能进行简单的设计。

(2)通过课程设计提高应用能力,分析问题和解决问题的能力。

(3)培养查阅资料的习惯,训练和提高自学,独立思考的能力。

2、课程设计要求

交通灯控制系统的设计

1)掌握在单片机系统中扩展简单I\/O接口的方法。

2)掌握数据输出程序的设计方法。

3)掌握模拟交通灯控制的实现方法。

4)掌握外部中断技术的基本使用方法。

5)掌握中断处理程序的编程方法。

从课程设计的目的出发,通过设计工作的各个环节,达到以下要求:

(1)能够正确理解课程设计的题目和意义,全面思考问题。

(2)运用科学合理的方法,认真按时完成。

二、课程设计课题的分析

1、电路的设计

1)原理

要完成本实验,首先必须了解交通灯的亮灭规律。

实验需要用到试验箱上八个发光二极管中的六个,即红、绿、黄各两个。

将L1(红)、L2(绿)、L3(黄)作为东西方向的指示灯,将L5(红)、L6(绿)、L7(黄)作为南北方向的指示灯。

交通灯的亮灭规律为:初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。

闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。

闪烁若干次后,再切换到东西路口方向,重复上述过程。

各发光二极管的阳极通过保护电阻接到+5V的电源上,阴极接到输入端上,因此使其点亮使相应使相应输入端为低电平。

当有急救车到达时,两个方向上的红灯亮,以便让急救车通过,假设急救车通过路口的时间为10秒,急救车通过后,交通灯恢复中断前的状态。

本程序以单次脉冲为中断申请,表示有急救车通过,单次脉冲输出端P-接CPU板上的INT0。

2)、硬件电路图

图1—1 交通灯控制系统的硬件接线图

74LS273的输出00—07接发光二极管L1—L8,74LS273的片选CS273接片选信号CS2,此时74LS273的片选地址为CFA0—CFA7之间任选。

3)、程序流程图

主程序流程

图1—2 主程序软件流程图

中断程序流程图

三、课程设计的结果

1、程序

NAME JIAOTONGGENG

OUTPORT EQU 0CFB0H;端口地址

SE EQU 55H;SE保存从端口CFA0输出的数据

CSEG AT 0000H

LJMP START

CSEG AT 4003H

LJMP INT

CSEG AT 4100H

START:SETB IT0;中断程序初始化

SETB EX0

SETB EA

MOV A,#11H;置首显示码,两红灯全亮

MOV SE,A;保存

ACALL DISP;显示输出

ACALL DE3S;延时3秒

LLL:MOV A,#12H;东西路口绿灯亮,南北路口红灯亮

MOV SE,A

ACALL DISP

ACALL DE10S;延时10秒

MOV A,#10H;东西路口绿灯灭

MOV SE,A

ACALL DISP

MOV R2,#05H;东西路口黄灯闪烁5次

TTT:MOV A,#14H

MOV SE,A

ACALL DISP

ACALL DE02S;延时0.2秒

MOV A,#10H

MOV SE,A

ACALL DISP

ACALL DE02S

DJNZ R2,TTT

MOV A,#11H;红灯全亮

MOV SE,A

ACALL DISP

ACALL DE02S;延时0.2秒

MOV A,#21H;东西路口红灯亮,南北路口绿灯亮

MOV SE,A

ACALL DISP

ACALL DE10S;延时10秒

MOV A,#01H;南北路口绿灯灭

MOV SE,A

ACALL DISP

MOV R2,#05H;南北路口黄灯闪烁5次

KKK:MOV A,#41H

MOV SE,A

ACALL DISP

ACALL DE02S;延时0.2秒

MOV A,#01H

MOV SE,A

ACALL DISP

ACALL DE02S

DJNZ R2,KKK

JMP LLL;转SSS循环

DE10S:MOV R5,#100;延时10秒

JMP DE1

DE3S:MOV R5,#30;延时3秒

JMP DE1

DE02S:MOV R5,#02;延时0.2秒

DE1:MOV R6,#200

DE2:MOV R7,#126

DE3:DJNZ R7,DE3

DJNZ R6,DE2

DJNZ R5,DE1

RET

DISP:MOV DPTR,#OUTPORT

CPL A;取反,点亮发光二极管

MOVX@DPTR,A

RET

中断处理程序

INT:PUSH ACC;有关寄存器入栈

PUSH PSW

MOV A,#11H;两红灯全亮

ACALL DISP

ACALL DELAY

MOV A,SE;将主程序中保存的数据再送给A

ACALL DISP

POP PSW;有关寄存器出栈

POP ACC

RETI

DELAY:MOV R1,#100

DEL1:MOV R2,#200

DEL2:MOV R3,#126

DEL3:DJNZ R3,DEL3

DJNZ R2,DEL2

DJNZ R1,DEL1

RET

END

2、现象

将程序输入到单片机中,运行程序,可以观察到现象:首先是两个路口的红灯全亮,延时3秒之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时10秒后,东西路口绿灯灭,黄灯开始闪烁。

闪烁5次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时10秒后,南北路口的绿灯灭,黄灯开始闪烁。

闪烁5次后,再切换到东西路口方向,重复上述过程。

当有中断申请时,两个方向上的红灯亮,经过10秒急救车通过之后,恢复到急救车到来之前的状态继续运行,可有多次的中断申请。

四、课程设计的心得体会

1.通过试验进一步理解和消化了书本知识,分析每个语句的含义,运用所学知识进行简单的程序设计。

了解了在单片机系统中扩展简单I\/O接口的方法.外部中断技术的基本使用方法,掌握了中断处理程序的编程方法。

2.通过在图书馆查阅各种单片机资料,培养了我自学和独立思考的能力。

与同学交流研究,让我懂得了更多以前不明白的知识.

3.在课程设计过程中,不断调试程序和修改程序,提高了对单片机的应用能力,分析问题和解决问题的能力。