用C语言对循迹小车进行编程

发布者:BlissfulMoments最新更新时间:2018-03-11 来源: eefocus关键字:C语言  循迹小车  编程 手机看文章 扫描二维码
随时随地手机看文章

  刚开始写汇编的中断应用程序时,曾经为出入堆栈的问题而困扰。C51扩展了函数的定义,使它可以直接编写中断服务函数,而可以不必考虑出入堆栈的问题,从而提高了工作的效率。扩展的关键字是in—terrupt,它是函数定义时的一个选项。只要在一个函数定义后面加上这个选项,那么这个函数就变成了中断服务函数。定义中断服务函数时可以用如下的形式。
  
  函数类型函数名(形式参数)interruptn[usingn]
  
  中断函数不能通过形式参数进行参数传递,也没有返回值。因此建议在定义中断函数时将其定义为viod类型,以明确说明没有返回值。
  
  interru关键字是不可缺少的,它告诉编译器该函数是中断服务函数,并由后面的n指明所使用的中断号。n的取值范围为0~31,但具体的中断号要取决于芯片的型号,像AT89S52实际上就使用O~4号中断。每个中断号都对应一个中断向量,具体地址为8n+3,中断源响应后处理器会跳转到中断向量所处的地址执行程序,编译器会在这地址上产生一个无条件跳转语句,转到中断服务函数所在的地址执行程序。51芯片的中断向量和中断号,如下表所示。

中断号中断源中断向量
0外部中断00003H
1定时器/计数器0000BH
2外部中断10013H
3定时器/计数器1001BH
4串行口00231-1


关键字:C语言  循迹小车  编程 引用地址:用C语言对循迹小车进行编程

上一篇:在C语言中如何对某个引脚进行读写操作
下一篇:单片机应用编程知识介绍

推荐阅读最新更新时间:2024-03-16 15:57

简析STM32的启动过程
  当前的嵌入式应用程序开发过程里,C语言已成为了绝大部分场合的最佳选择。如此一来main函数似乎成为了理所当然的起点——因为C程序往往从main函数开始执行。但一个经常会被忽略的问题是:微控制器(单片机)上电后,是如何寻找到并执行main函数的呢?很显然微控制器无法从硬件上定位main函数的入口地址,因为使用C语言作为开发语言后,变量/函数的地址便由编译器在编译时自行分配,这样一来main函数的入口地址在微控制器的内部存储空间中不再是绝对不变的。相信读者都可以回答这个问题,答案也许大同小异,但肯定都有个关键词,叫“启动文件”,用英文单词来描述是“Bootloader”。   无论性能高下,结构简繁,价格贵贱,每一种微控制器(
[单片机]
查找嵌入式C语言程序/软件中的缺陷的多种技术
基于模式的静态代码分析、运行时内存监测、单元测试以及数据流分析等软件验证技术是查找嵌入式C语言程序/软件缺陷行之有效的方法。上述技术中的每一种都能查找出某一类特定的错误。即便如此,如果用户仅采用上述技术中的一种或者几种来进行验证,这样的验证方法很有可能会漏过对程序中的一些缺陷的检查。解决此类问题的一种安全和有效的策略就是同时使用上述软件验证中的所有互补技术。这样就能建立起一个牢固的框架来帮助用户检查出可能会避开某种特定技术的缺陷。与此同时,用户也自然地建立起一个能检测出关键并且难以查找的功能性错误的环境。 本文将详尽阐述基于模式的静态代码分析、运行时内存错误检测、单元测试以及数据流分析等自动化技术共同使用时是如何查找出嵌入式C语言
[单片机]
查找嵌入式<font color='red'>C语言</font>程序/软件中的缺陷的多种技术
C语言写一个LCD1602驱动显示程序
#define MAIN_Fosc 22118400L #include STC15Fxxxx.H sbit P_HC595_SER = P4^0; sbit P_HC595_RCLK = P5^4; sbit P_HC595_SRCLK = P4^3; u8 hour,minute,second; void DisplayRTC(void); void RTC(void); void delay_ms(u8 ms); void DisableHC595(void); void Initialize_LCD(void); void Write_AC(u8 hang,u8 lie); void Write_DIS_Data(u8
[单片机]
单片机C语言程序-依次点亮八个LED灯
电路很简单八个led灯接在p1口.运行后看到的效果是 从第一个灯开始 随着时间变化 二进制数的递减 所有的灯都会依次的点亮,当全部的灯都被点亮后再重新开始这个过程 一直循环下去 单片机是不是很有趣? 下面是c语言程序源码 #include reg51.h void delay100ms(); //如果函数是在主函数后面定义,那么一定要在主函数前面声明 void main() { int i; i=0xfe; while(1) {P1=i; i--; delay100ms(); if(i==0) i=0xfe; } } void delay100ms(vo
[单片机]
小容量单片机系统的C语言程序结构
引 言:   2002年初,笔者着手写一个IC卡预付费电表的工作程序,该电表使用Philips公司的8位51扩展型单片机87LPC764,要求实现很多功能,包括熄显示、负荷计算与控制、指示闪烁以及电表各种参数的查询等,总之,要使用时间的单元很多。笔者当时使用ASM51完成了这个程序的编写,完成后的程序量是2KB多一点。后来,由于种种原因,这个程序并没有真正使用,只是作了一些改动之后用在一个老化设备上进行计时与负荷计算。约一年后,笔者又重新改写了这些代码。 1 系统的改进   可以说,这个用ASM51实现的代码是没有什么组织性可言的,要什么功能就加入什么功能,弄得程序的结构非常松散,其实这也是导致笔者最终决定重新改写这些代
[单片机]
上海龙晶获Tensilica Diamond 330HiFi音频处理器IP核授权开发便携AVS芯片
  美国加州SANTA CLARA、中国上海2007年2月12日讯 – Tensilica公司今日宣布上海龙晶科技获得了Diamond Standard 330HiFi音频处理器IP核许可,进行SoC(片上系统)设计,该SoC芯片将用于符合中国正在兴起的音视频编码标准(AVS)手机和个人媒体播放器(PMP)。龙晶公司已经成功地发布了DS-1000 IC,该产品是支持数字电视和IPTV中标清和高清应用的AVS视频解码芯片。此后,龙晶公司希望成为中国第一家供应完全符合AVS标准的便携低功耗芯片的公司。为此它将采用Diamond Standard 330HiFi音频处理器IP核完成便携AVS SoC的音频处理和系统控制功能。   龙晶科
[焦点新闻]
Keil C51对C语言的关键词扩展之十: pdata
外部ram通过一个地址指针寄存器来间接访问,读写效率要低于内部ram。 外部ram容量最大可位64KB。 Keil C51提供两种外部数据存储方式,pdata和xdata。 1)xdata存储类型,指示变量可存储在外部ram 64KB地址范围内任意位置。large内存模型下,变量即为此种默认存储类型。 2)pdata存储类型,指示变量可存储在外部ram 256字节页范围内任意位置。compact内存模型下,变量即为此种存储类型。 外部ram通过movx指令存取。
[单片机]
Xilinx数字显示器的可编程开发平台
   东京电子器件有限公司 (TED) 与赛灵思公司 (Xilinx) 今天宣布推出一款可实现领先的显示器应用(如平板电视机监视器和显示器、背投电视机和数字投影仪)的高效设计和验证的开发平台。联合开发的 Spartan?-3E 显示器解决方案开发板利用Xilinx Spartan-3E FPGA 的性能和低成本优势为面向丰富特性的显示器应用提供了第一个完全可编程的开发平台。该解决方案平台采用快速转换原型开发板的形式,提供开发全功能显示器产品所需的全套集成 IP,以及在一块电路板上集成连接显示板模块和视频/调谐器板所需的丰富 I/O。   由于价格不断下降和政府强令推广数字节目,平板显示器市场是电子行业中增长最快的领域之一。显示板
[新品]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved