全中文中语言微电脑单片机编程系统使用教程

合集下载

51单片机及C语言入门教程

51单片机及C语言入门教程

51单片机及C语言入门教程本教程将介绍51单片机及C语言的入门知识,帮助初学者快速掌握这两个方面的基本内容。

以下是本教程的详细内容:一、51单片机概述(200字)51单片机是由Intel公司推出的一种常见的单片机芯片,具有广泛应用的特点。

它采用了Harvard结构,具有8位数据总线和16位地址总线。

其主要特点是结构简单、易于学习、应用广泛,适用于各种嵌入式系统。

二、C语言基础(300字)C语言是一种高级编程语言,具有跨平台、可移植性强等特点,被广泛应用于各种软件开发和嵌入式系统中。

学习C语言的基础知识是学习51单片机编程的必要前提。

C语言基础知识主要包括数据类型、变量、常量、运算符、表达式、流程控制语句等内容。

这些知识是学习C语言和51单片机编程的基础,需要仔细理解和掌握。

三、51单片机编程入门(400字)1. 搭建开发环境:首先需要安装51单片机的开发工具,如KeilC51等。

然后,连接单片机开发板和电脑,确保硬件连接正确。

2.了解开发板:学习使用51单片机的开发板是学习51单片机编程的第一步。

具体包括开发板上各个接口的功能和使用方法。

3.编写第一个程序:根据教材或教程,编写第一个简单的程序,如让LED灯闪烁等。

学习如何通过C语言编写程序,将其烧录到单片机中,并运行和调试。

四、C语言与51单片机的应用(300字)在学习了C语言和51单片机的基础知识之后,可以进一步学习它们的应用。

1.输入输出操作:学习如何通过51单片机与外部设备进行输入输出操作,如控制LED灯的亮灭、读取按键输入等。

2.定时器和中断:学习如何使用51单片机的定时器和中断功能来实现定时任务和外部事件处理。

3.串口通信:学习如何通过51单片机的串口通信功能与其他设备进行数据交换和通信。

五、实例项目及拓展应用(200字)完成了基础学习后,可以尝试一些实例项目,如温度测量系统、遥控器、电子钟等。

同时,可以进一步学习其他相关知识,如LCD显示、SPI 通信等,以扩展自己的应用能力。

51单片机C语言入门教程

51单片机C语言入门教程

51单片机C语言入门教程单片机是一种集成电路,可以完成各种功能。

C语言是一种高级编程语言,可以用来编写单片机的程序。

本文将介绍51单片机C语言的入门教程。

一、选择合适的开发环境选择合适的开发环境是学习51单片机C语言的第一步。

常用的开发环境有Keil C51、SDCC、IAR Embedded Workbench等。

这些开发环境都提供了开发工具和编译器,方便编写和调试代码。

二、了解51单片机的基本结构三、学习C语言的基本语法学习C语言的基本语法是学习51单片机C语言的基础。

C语言包括数据类型、变量、运算符、控制流语句等等。

学习C语言的基本语法可以参考相关的C语言教程。

四、掌握51单片机的特殊功能寄存器51单片机具有一些特殊功能寄存器,可以实现各种功能。

例如,P0是一个I/O口,可以用来控制外部设备的输入和输出;TMOD和TCON分别是定时器/计数器的模式和控制寄存器,可以实现定时和计数功能。

掌握这些特殊功能寄存器可以为后面的单片机编程做好准备。

五、编写第一个51单片机C语言程序编写第一个51单片机C语言程序可以帮助巩固前面学习的知识。

可以从简单的LED闪烁程序开始,逐步扩展到其他功能。

编写程序的过程中要注意语法的正确性和逻辑的合理性。

六、调试程序调试程序是保证程序正确运行的关键。

可以使用仿真器或者调试器对程序进行调试。

调试程序可以查看程序的运行状态、变量的值等等,帮助定位错误并进行修复。

七、深入学习更高级的C语言特性一旦掌握了基本的51单片机C语言编程,可以深入学习更高级的C语言特性。

例如,函数的使用、数组的应用、结构体和指针等等。

这些高级特性可以使程序更加模块化和灵活。

八、练习和实践练习和实践是巩固51单片机C语言编程知识的最好方法。

可以选择一些小项目或者例程进行练习,将理论知识应用于实际。

总结:通过以上的步骤,我们可以初步学习和掌握51单片机C语言的编程。

当然,这仅仅是入门级别的教程,还有很多更深入的知识需要进一步学习和探索。

单片机入门教程

单片机入门教程

单片机入门教程单片机,又称微控制器(Microcontroller),是一种集成在电路上的微型计算机,具有体积小、价格低、功能强大、使用方便等优点,广泛应用于智能家居、工业控制、消费电子、汽车电子等领域。

通过学习单片机,我们可以了解如何将计算机技术与实际应用相结合,实现各种控制系统的设计。

单片机主要由中央处理器(CPU)、存储器(RAM/ROM)、输入/输出接口(I/O口)、定时/计数器、中断系统等组成。

中央处理器(CPU):控制器的核心部件,负责指令执行、数据处理等。

存储器(RAM/ROM):存储数据和程序代码。

RAM用于实时存储数据,ROM用于存储固定程序。

输入/输出接口(I/O口):用于连接外部设备和CPU之间的数据传输。

定时/计数器:用于实现定时操作和计数功能。

中断系统:用于处理外部事件,实现实时控制。

单片机编程语言主要有汇编语言和C语言。

汇编语言是低级语言,与硬件密切相关,适用于对性能要求较高的场合;C语言是高级语言,具有可读性强、易于维护等优点,适用于初学者。

掌握基本概念:了解单片机的组成、工作原理、编程语言等基本概念。

学习电路基础:了解电路的基本原理和元件,为后续实践打下基础。

实践操作:通过实验和项目实践,加深对理论知识的理解和应用。

阅读相关书籍:参考相关书籍和资料,拓宽知识面和技能水平。

参加培训课程:参加专业培训课程,接受系统化的教学和实践指导。

交流与讨论:与其他学习者交流和讨论,分享经验和技巧,提高学习效果。

单片机是电子技术领域中重要的组成部分,学习单片机需要掌握基本概念、电路基础、编程语言等方面的知识。

通过实践操作和项目经验积累,可以更好地理解和应用单片机技术。

阅读相关书籍、参加培训课程和与其他学习者交流也是提高学习效果的重要途径。

Access是微软公司推出的一款关系型数据库管理系统,它作为Office套件的一部分,与Word,Excel和PowerPoint等应用一起,构成了微软公司强大的办公软件套件。

单片机教程入门教程

单片机教程入门教程

单片机教程入门教程单片机是一种小型的、集成度很高的微型计算机系统,具有处理器、存储器和外设等功能。

它广泛应用于各个领域,如电子设备、控制系统、通信等。

对于初学者而言,学习单片机是一项非常有意义和有挑战性的任务。

下面是关于单片机的入门教程,希望对初学者有所帮助。

一、基础知识:1. 单片机的基本结构:讲解单片机的组成部分,包括中央处理器、存储器、时钟、输入输出端口等。

2. 常用的单片机芯片介绍:介绍一些常见的单片机芯片,如51系列、AVR系列等,让初学者了解不同芯片的特性和应用。

二、开发环境搭建:1. 下载和安装开发工具:介绍常用的单片机开发工具,如KeilC、IAR Embedded Workbench等,讲解如何下载和安装。

2. 编写第一个程序:通过简单的LED闪烁程序来演示单片机的基本编程方法,让初学者能够快速上手。

三、基本操作:1. I/O口的使用:讲解如何通过单片机的I/O口实现输入和输出操作,如通过按键控制LED灯的亮灭。

2. 定时器的使用:讲解单片机的定时器原理和使用方法,如通过定时器控制LED灯的闪烁频率。

四、数字信号处理:1. 数字信号的输入输出:讲解如何通过单片机的ADC和DAC模块实现数字信号的输入和输出,如通过麦克风采集声音信号并通过喇叭播放。

2. PWM技术的应用:介绍脉宽调制(PWM)技术的原理和应用场景,如通过PWM控制电机的转速和方向。

五、通信技术:1. 串口通信:讲解单片机的串口通信原理和使用方法,如通过串口与电脑进行数据交互。

2. SPI和I2C总线通信:介绍SPI和I2C总线通信的原理和应用场景,让初学者了解不同通信方式的特点和优势。

六、扩展应用:1. 温度传感器的应用:介绍如何通过单片机连接温度传感器,实时采集和显示温度值。

2. 蓝牙无线通信的应用:讲解如何通过单片机与蓝牙模块进行通信,实现无线控制和数据传输。

通过以上的入门教程,初学者可以了解到单片机的基本知识和应用场景,掌握一些基本的编程和操作方法。

51单片机汇编语言教程

51单片机汇编语言教程

51单片机汇编语言教程汇编语言是一种低级程序设计语言,直接操作计算机硬件,能够充分发挥硬件的性能,是学习嵌入式系统开发的基础。

而51单片机是广泛应用于嵌入式系统中的一种微控制器,具有功能强大、易于掌握等特点。

本篇文章将为大家介绍51单片机汇编语言的基本概念、编程指令以及应用实例,帮助读者快速入门。

一、51单片机汇编语言概述1.1 51单片机简介51单片机是一种由英特尔公司设计的8位微控制器,其核心是一个CPU,具有RAM、ROM、I/O端口等外围设备。

它采用的是汇编语言编程,具有指令集简单、易于学习等特点,因此深受嵌入式系统开发者的喜爱。

1.2 汇编语言的基本概念汇编语言是一种低级语言,与高级语言相比,更接近计算机底层的硬件操作。

在汇编语言中,程序员通过编写指令来告诉计算机具体的操作,如数据存储、运算等。

二、51单片机汇编语言基础知识2.1 寄存器寄存器是51单片机中的一种重要的存储设备,用于存储数据、地址等信息。

51单片机共有32个寄存器,其中一部分用于存储通用数据,一部分用于存储特定功能的数据。

在汇编语言编程中,我们可以使用这些寄存器来存储数据和进行运算。

2.2 程序存储器程序存储器是51单片机中存储程序的地方,它可以分为ROM和RAM两种类型。

其中,ROM存储的是不可修改的程序代码,而RAM 存储的是可以读写的数据。

2.3 I/O端口I/O端口是51单片机与外部设备进行数据交互的接口,通过输入/输出指令,可以实现数据的输入与输出。

在汇编语言中,我们需要了解如何使用I/O端口来与外部设备进行通信。

三、51单片机汇编语言编程指令3.1 数据传输指令数据传输指令用于将数据从一个地方传输到另一个地方。

常用的数据传输指令有MOV、MOVC、MOVX等,通过这些指令可以实现数据的读取、存储和传输等操作。

3.2 算术运算指令算术运算指令用于对数据进行加、减、乘、除等运算操作。

51单片机中的算术运算指令包括ADD、SUB、MUL、DIV等,通过这些指令可以对数据进行各种运算操作。

微电脑控制系统使用说明

微电脑控制系统使用说明

微电脑控制系统使用说明
1.接通电源,控制器出厂时已经调节时间,段数1时间为下压延时时间其他段数时间和为回复时间
2.如需设置控制时间按“编辑”键2. 5秒以上,听到“嘀”的声音后,段数1在闪烁,利用“△(+)”或“▽(一)”键调节下压延时时间,继续按动“编辑”键,分别(设置2, 3, 4)段数,如其他段数未编辑完,段数仍在闪烁,此时按动操纵开关机器不工作,直至返回段1,此时按动操纵开关机器可以工作。

按动“功能选择”键,手动、半自动、全自动或调试的指示灯会依次亮起即代表机器的工作状态。

选择手动时可以回复时间设为3按动操纵开关工作一次,选择半自动或全自动时必须要有回复时间,否则气缸下压不会回复,选择半自动工作时,按操纵开关机器全自动工作,松开开关机器停止工作,全自动工作时按动操纵开关机器全自动工作,按“急停”键机器停止工作,调试时不受影响,按动操纵开关机器下压,松开按动操纵开关冲头回位。

3.在全自动工作时按下“急停”键机器停止工作。

长按“计数清零”键 2.5秒以上,计数器将清零。

工作结束时长按电源键2. 5秒以上关闭电源,断开电源。

51单片机c语言教程

51单片机c语言教程

51单片机c语言教程单片机是一种集成了处理器、存储器和各种输入输出接口的微型计算机。

它可以用来完成各种任务,如控制电机、采集数据、控制显示等。

在单片机中,C语言是一种常用的编程语言,通过使用C语言来编写单片机程序,可以更加方便快捷地完成各种功能。

单片机使用C语言进行编程的主要流程如下:首先,需要搭建一个适合的开发环境。

在使用C语言编写单片机程序之前,需要安装相应的开发工具,如Keil C51、IAR Embedded Workbench等。

这些开发工具可以提供编译、调试等功能,方便我们进行程序开发和调试。

接下来,需要了解单片机的硬件平台。

在编写单片机程序之前,需要了解单片机的硬件结构和各个引脚的功能。

单片机的硬件平台通常包括定时器、串口、数字转换等模块,通过对这些模块的理解,可以更好地利用它们完成各种任务。

然后,可以开始编写C语言程序。

C语言是一种结构化的高级语言,通过使用C语言,可以更方便地完成单片机程序的编写。

在编写C语言程序之前,需要了解C语言的语法和常用的函数库,如输入输出函数库、定时器函数库等。

通过灵活地使用这些函数,可以更加快速地实现想要的功能。

在编写C语言程序时,需要注意一些常见的问题。

比如,需要合理地分配内存空间,避免内存溢出等问题;需要注意函数的调用顺序,保证程序的正确执行;需要考虑编程的效率,避免不必要的计算和资源浪费;需要进行适当的程序调试,确保程序的正确性等。

最后,需要进行程序的下载和调试。

在编写完成单片机程序后,需要将程序下载到单片机的存储器中,并进行相应的调试工作,确保程序能够正常运行。

调试过程中,可以通过调试工具查看程序的执行过程,可以进行单步调试、变量跟踪等操作,帮助我们找出程序中的错误和问题,并进行修正。

通过以上步骤,可以更加方便地使用C语言来编写单片机程序。

当然,单片机的应用非常广泛,不仅仅限于C语言的编程,还可以使用汇编语言、基于图形化编程语言的开发工具等。

单片机C语言入门教程

单片机C语言入门教程

单片机C语言入门教程学习一种编程语言,最重要的是建立一个练习环境,边学边练才能学好。

下面是分享的单片机C语言入门教程,一起来看一下吧。

Keil软件是目前最流行开发80C51系列单片机的软件,Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(Vision)将这些部份组合在一起。

学习之前请先安装KEILC51软件,在学会使用汇编语言后,学习C 语言编程是一件比较容易的事,我们将通过一系列的实例介绍C语言编程的方法。

所示电路图使用89c51单片机作为主芯片,这种单片机性属于80C51系列,其内部有8K的FLASHROM,可以反复擦写,非常适于做实验。

89c51的P1引脚上接8个发光二极管,P3.2~P3.4引脚上接4个按钮开关,我们的任务是让接在P1引脚上的发光二极管按要求发光。

简单的C程序介绍例1-1:让接在P1.0引脚上的LED发光。

单灯闪烁程序#include"reg51.h"//这一句是将51的常用端口,内部寄存器等的定义文件包含进这段程序sbitP1_0=P1^0;voidmain(){ P1_1=0;}这个程序的作用是让接在P1.0引脚上的LED点亮。

下面来分析一下这个C语言程序包含了哪些信息。

1)"文件包含"处理。

程序的第一行是一个"文件包含"处理。

所谓"文件包含"是指一个文件将另外一个文件的内容全部包含进来,所以这里的程序虽然只有4行,但C编译器在处理的时候却要处理几十或几百行。

这里程序中包含REG51.h文件的目的是为了要使用P1这个符号,即通知C编译器,程序中所写的P1是指80C51单片机的P1端口而不是其它变量。

这是如何做到的呢?打开reg51.h可以看到这样的一些内容:sfrP0=0x80;sfrP1=0x90;sfrP2=0xA0;sfrP3=0xB0;sfrPSW=0xD0;sfrACC=0xE0;sfrB=0xF0;sfrSP=0x81;sfrDPL=0x82;sfrDPH=0x83;sfrPCON=0x87;sfrTMOD=0x89; sfrTL0=0x8A; sfrTL1=0x8B; sfrTH0=0x8C; sfrTH1=0x8D; sfrIE=0xA8; sfrIP=0xB8; sfrSCON=0x98; sfrSBUF=0x99; sbitCY=0xD7; sbitAC=0xD6; sbitF0=0xD5; sbitRS1=0xD4; sbitRS0=0xD3; sbitOV=0xD2; sbitP=0xD0; sbitTF1=0x8F; sbitTR1=0x8E; sbitTF0=0x8D; sbitTR0=0x8C; sbitIE1=0x8B;sbitIE0=0x89; sbitIT0=0x88; sbitEA=0xAF; sbitES=0xAC; sbitET1=0xAB; sbitEX1=0xAA; sbitET0=0xA9; sbitEX0=0xA8; sbitPS=0xBC; sbitPT1=0xBB; sbitPX1=0xBA; sbitPT0=0xB9; sbitPX0=0xB8; sbitRD=0xB7; sbitWR=0xB6; sbitT1=0xB5; sbitT0=0xB4; sbitINT1=0xB3; sbitINT0=0xB2; sbitTXD=0xB1; sbitRXD=0xB0;sbitSM1=0x9E;sbitSM2=0x9D;sbitREN=0x9C;sbitTB8=0x9B;sbitRB8=0x9A;sbitTI=0x99;sbitRI=0x98;熟悉80C51内部结构的读者不难看出,这里都是一些符号的定义,即规定符号名与地址的对应关系。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中语言微电脑编程系统使用说明---中国人自已的微电脑编程语言- 1 -最近几年,中国的微电子迅猛发展,微电脑应用已进入千家万户,所有的家电几乎每台都装有微电脑芯片,例如电饭煲,电视机,电风扇等。

不只是在民用方面,各个行业的微电脑应用也是是新月异:工业应用,医疗器械,航天应用等等。

可以说,现在社会微电脑应用已是无所不在!然而,中国的微电脑编程语言一直是英文为主的,这给一些英文基础不太好的微电子爱好者设定了一定的障碍。

在中国,有数亿万计的微电子爱好者,但从事微电脑编程的人员占不到十分之一,很大一部分就是因为编程语言的缘故。

不只是工作方面,这些微电子爱好者有好多想法,如果得以实现,可以发明出很多产品,但是就是因为英文基础不态好的原因造成的微电脑编程不能进行,从而给研发产品造成了一定的困扰,大的方面说,也阻碍了我国的电子信息化的发展。

在美国等一些国家,普通人员不要专业知识就可以学编程,因为编程语言是他们的,所以就和写文章一样,很容易的。

为此,我们经过多年努力,终于开发出一套完整的中文微电脑编程系统,取名中语言微电脑编程系统。

中语言微电脑编程系统是基于C语言基础上结合中文特点而开发的一套完整的微电脑单片机- 2 -中文编程系统,希望能给我国电子信息化发展尽一份微薄之力!中语言微电脑编程系统有以下特点:1,全中文语法结构与变量,完全符合中国人的书写与阅读习惯。

2,基于C语言但结合了中国人的语法词汇,无需生记硬背语法,用的时候看一下立即明白意思。

3,无论年龄,无论专业,无论性别,只要是微电子爱好者即可学会。

人人可学,人人可用。

4,一天入门,三天上手,简单易学。

5,重简去繁,在C语言上一些复杂的用不上的语法完全去掉,只留下简单实用而且常用的,当- 3 -然这是建立在不影响微电脑应用的基础上。

使得学习起来更加容易。

同时我们开发了中语言微电脑编程系统编程软件,系统软件具有如下特点:1,全中文友好界面,无需英语基础即可书写内容。

2,内嵌编译器,一键编译出对应的HEX文件,并显示出对应的目录,方便易找到HEX文件。

3,内附有教程,一看即会。

4,代码折叠功能,复杂较长的函数可以折叠起来,读起来更方便。

5,左栏有双击打开最近文件功能,简单实用。

- 4 -中语言微电脑编程系统还有很多优点等着您去发现,当然,我们这套系统也是一套全新的系统,有些问题和不足之处,如果您发现了,请告诉我们,以方便改进。

- 5 -中语言微电脑编程系统―――使用教程第一节,新建项目目录:首先在D:盘或E:根目录下新建一个文件夹:我的项目,然后在我的项目文件夹中新建一个文件夹:项目1.这样我们就可以方便的保存将要新建的项目:- 6 -第二节,打开软件:打开我们的编程系统软件,将会出现如下画面:- 7 -第三节:新建我们的工程项目:- 8 -点击文件-新建工程,将会出现如下画面:这是在提示我们选择相关的微电脑芯片,以提供正确的编译方式,选好以后点击确认选择,将会出现如下画面:- 9 -正确填入我们需要的项目名字:我这里填的是点亮第一盏红灯,点保存,将会出现如下画面:- 10 -可以看到,已有了第一行代码,这是引入头文件的,不用我们再写了。

接下来就正式进入我们的第一个项目了,这里我们要先从最简单的入手,也就是点亮一个我- 11 -们的红灯,代码很简单,请输入以下代码:#端口再定义红灯控制脚 P1_1函数主程序()红灯控制脚 = 低;结束函数这里第一行我们就是把单片机的P1_1口再次定义一下,定义为我们方便看懂的红灯控制脚,这样对于我们后面查询代码时非常有用。

第二行函数主程序,这个不用说了,也就是说是主程序的开始,第三行,红灯控制脚 = 低;这句代码说的是将这个红灯控制脚置为低电平,可以看出,这个脚接低电平时红灯会亮。

第四句是结束函数,也就是主程序结束了。

怎么样,很简单吧,那么倒底这- 12 -几句代码是不是有用呢?我们点一下,这时出现如下画面:可以看出,在下面项目编译提示信息中已出现了.hex文件编译成功的信息,并给出了文件目- 13 -录,那么这个文件倒底能不能运行呢?我们必须实践一下,打开仿真软件PROTEUS,这可是个好软件,在项目调试过程中非常有用,这里晶体选12M,装入我们刚生成的HEX文件,点运行,可以看出,LED 灯亮了。

是不是很容易呢?不过万里长征走了第一步,由浅入深慢慢来,接下来我们要让这个灯一直闪,- 14 -一秒一次,我们要有个思路,写代码没思路不行,盲目的写最后写出来的很乱的。

那么要想让灯闪,那就让红灯控制脚先置高或低,延时一下,再置高或低,这样是不是就可以了呢?写入如下代码:#端口再定义红灯控制脚 P1_1声明无返回值延时_毫秒(整数型毫秒);函数主程序()红灯控制脚 = 低;延时_毫秒(1000);红灯控制脚 = 高;延时_毫秒(1000);- 15 -结束函数函数延时_毫秒(整数型毫秒)短整数型计次变量;多任务自动循环(毫秒递减)单任务依次循环(计次变量=0;计次变量<120;计次变量递加);任务安排完毕结束函数- 16 -整个代码加了个延时函数,所以要在主函数上面声明一下,这个函数是没有返回值的,所以要声明为无返回值的。

先看一下延时函数,函数延时_毫秒(整数型毫秒)这里先声明了一个局部变量,毫秒,表示我们要延时多长时间,如果延时1毫秒,到时就填1就可以了,延时1000毫秒也就是1秒,填1000就可以了。

再看下一句:短整数型计次变量;这里也是声明了一个变量,短整数型的,用于延时循环。

再看一下这一句:单任务依次循环(计次变量=0;计次变量<120;计次变量递加);这就是说当计次变量小于120时,计次变量就会递加1。

这里是12MHZ的晶体,大概延时时间在1个毫秒。

再看上面一句多任务自动循环(毫秒递减),也就是说这里面的数开始减1,当减为0时自然就结束这个循环。

这里解释一下单任务和多任务,单任务就是只运行这个函数本身的任务,多任务就是包除自身任务外还包含有其它任务运行,后面跟有任务安排完毕的句子。

好,点一下编译,装入PROTEUS运行,好像不对,亮一下就灭了,不是我们想的一直闪,如果我们想一直闪怎么办?很简单,再用多任务自动循环(真)就可以了,将代码改一下:#端口再定义红灯控制脚 P1_1- 17 -声明无返回值延时_毫秒(整数型毫秒); 函数主程序()多任务自动循环(真)红灯控制脚 = 低;延时_毫秒(1000);红灯控制脚 = 高;- 18 -延时_毫秒(1000);任务安排完毕结束函数函数延时_毫秒(整数型毫秒短整数型计次变量;多任务自动循环(毫秒递减)单任务依次循环(计次变量=0;计次变量<120;计次变量递加);任务安排完毕结束函数- 19 -点一下编译,装入PROTEUS运行,效果出来了:接下来我们要让红灯用中断来闪烁,因为中断是微电脑必须的一个功能,新建项目并输入以下- 20 -代码:#端口再定义红灯控制脚 P1_1短整数型计数器;函数初始化_定时器0_16位(无类型)模式控制寄存器 = 0x01;低位初装值_定时器0 = 0xD8;高位初装值_定时器0 = 0xF0;中断允许_定时器0 = 真;总中断允许 = 真;开启定时器0 = 真;- 21 -结束函数函数中断后事件_定时器0(无类型) __中断号 1中断标志0 = 假;低位初装值_定时器0 = 0xD8;高位初装值_定时器0 = 0xF0;计数器递加;如果(计数器>=100)- 22 -计数器=0;红灯控制脚 = 取相反 (红灯控制脚);结束如果结束函数函数主程序()初始化_定时器0_16位();单任务自动循环(真);结束函数看一下上面的中断定时器初始化,这里是12MHZ晶体,所以中断时间大概为10毫秒。

函数内- 23 -容很简单的,就是几个中断必要的条件。

中断后的事件加了一个计数器,当计数器大于100时(也就是1秒钟),把红灯控制脚翻转,也就是低变成高,高变成低,这样就可以持续的闪烁了。

主程序很简单的,就两句话。

下面是运行效果:学以致用,再好的东西用不上那就等于没有学。

下面我们来模拟简单的交通灯程序,我们先理- 24 -一下思路,交通灯有红,黄,绿三灯组成,红灯亮完,黄灯亮,黄灯亮完绿灯亮,反之一样,不停循环。

请输入以下代码:#端口再定义红灯控制脚 P1_1#端口再定义黄灯控制脚 P1_2#端口再定义绿灯控制脚 P1_3声明无返回值延时_毫秒(整数型毫秒);函数主程序()多任务自动循环(真)红灯控制脚 = 低;- 25 -延时_毫秒(9000);红灯控制脚 = 高;黄灯控制脚 = 低;延时_毫秒(3000);黄灯控制脚 = 高;绿灯控制脚 = 低;延时_毫秒(9000);绿灯控制脚 = 高;黄灯控制脚 = 低;延时_毫秒(3000);黄灯控制脚 = 高; 任务安排完毕- 26 -结束函数函数延时_毫秒(整数型毫秒)短整数型计次变量;多任务自动循环(毫秒递减)单任务依次循环(计次变量=0;计次变量<120;计次变量递加);任务安排完毕- 27 -结束函数程序很简单,不再解释,这也是全中文的好处!点击编译,并装入PROTEUS,可以看到以下效果:到了这时候,我们就要学习一下按键控制了。

当按键1按下的时候红灯亮,当按键2按下的时- 28 -候绿灯亮,按键控制也有两种方式,我们先看第一种查询方式,也就是不停的查询按键的端口状态,请输入以下代码,:#端口再定义按键1 P3_2#端口再定义按键2 P3_3#端口再定义红灯1 P1_1#端口再定义绿灯2 P1_2声明无返回值延时_毫秒(整数型毫秒);函数主程序()红灯1 = 低;- 29 -多任务自动循环(真)如果(按键1==低)延时_毫秒(10);如果(按键1==低)红灯1 = 高;绿灯2 = 低;结束如果- 30 -结束如果如果(按键2==低)延时_毫秒(10);如果(按键2==低)红灯1 = 低;绿灯2 = 高;结束如果- 31 -结束如果任务安排完毕结束函数函数延时_毫秒(整数型毫秒)短整数型计次变量;多任务自动循环(毫秒递减)单任务依次循环(计次变量=0;计次变量<120;计次变量递加);任务安排完毕结束函数同样,代码很简单,这里要解释的就是这个延时10毫秒,为什么要这样?因为我们的单片机- 32 -周围存在很多电磁波干扰,所以延时一点时间,如果这个端口还是这个状态的话,那就表示是真的按键了,如果延时后端口状态变化了,就说明这个是干扰,就不处理这次按键的结果了。

这种方法叫去抖动或消抖动。

编译并装入PROTEUS,看一下效果:上面演示了按键的查询,下面要进行按键中断演示,因为我们的中断反应很快,而且运行过程- 33 -中点用的时间很小,这就是中断的好处了,原理是当中断来时,事先可以设定高中断还是低中断,我们这里设定低中断,也就是按键按下以后端口为低,引发中断,从而控制灯的状态,请输入以下代码:#端口再定义按键1 P3_2#端口再定义按键2 P3_3#端口再定义红灯 P1_1#端口再定义绿灯 P1_2短整数型按键状态位;声明无返回值延时_毫秒(整数型毫秒);函数初始化_硬件中断()- 34 -触发方式选择_硬件0 = 1;中断允许_硬件0 = 真;触发方式选择_硬件1 = 1;中断允许_硬件1 = 真;总中断允许 = 真;结束函数函数中断后事件_硬件0() __中断号 0- 35 -延时_毫秒(10);如果(按键1 == 低)按键状态位 = 1;结束如果结束函数函数中断后事件_硬件1() __中断号 2 延时_毫秒(10);- 36 -如果(按键2 == 低) 按键状态位 = 0;结束如果结束函数函数主程序()初始化_硬件中断();多任务自动循环(真)- 37 -如果(按键状态位 == 1)红灯 = 高;绿灯 = 低;否则红灯 = 低;绿灯 = 高;结束如果- 38 -任务安排完毕结束函数函数延时_毫秒(整数型毫秒)短整数型计次变量;多任务自动循环(毫秒递减)单任务依次循环(计次变量=0;计次变量<120;计次变量递加);任务安排完毕结束函数这里我们用了两个硬件中断,当中断来时,同样延时10毫秒检测一下端口状态,也是起延时- 39 -消抖的作用。

相关文档
最新文档