推荐阅读最新更新时间:2024-03-16 16:20
linux下avr单片机开发:中断服务程序
不管是什么单片机程序,中断总是非常重要的一部分 ,linux 下的avr开发,主要是依靠avr-gcc,以及avr-libc,它们对中断程序的格式要求,与window下的icc-avr以及win-avr有所差异,这里对linux下中断服务程序编写做个简要介绍。 首先是要引入的库: #include avr/io.h #include avr/interrupt.h 这两个是中断程序所要用到的,中断程序的编写位置,只要是在工程里的某个c文件里面就可以了。 具体格式: ISR(INT1_vect) { //...................................// } 其中的INT1
[单片机]
基于C51程序设计中字节对齐对程序的影响
一。什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐。其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台要求对 数据存放进行对齐,会在存取效率上带来损失。比如有些
[单片机]
在C51中如何将数字转换成字符串的问题
将整数转换成字符串,在C51中你如何做? 这个问题似乎很简单,keilC中也用sprintf()函数嘛,用就行了。但对于 寸土寸金 的单片机来说,问 题可没那么简单。 看看我代码中这句弃之不用的代码吧: //sprintf(sFileLen, %d ,fileLen*128);print(sFileLen); //使用这个库函数,体积一下增加2563. 我 的程序空间马上溢出不够用了。 OMG! C51库函数,伤不起啊 能自己写就自己写,尽量不用库函数吧。谱太大,用不起啊。下面这个函数就是类似sprintf()的作用。 为了节省几个字节,结果就直接发出来了,不必存储到uchar 中了。 // 向串口发送一个整数,支持
[单片机]
vxworks中断服务程序
中断服务程序用来处理来自硬件的中断,是设备驱动程序的重要组成部分。为及时响应外部中断,防止中断丢失.中断服务程序应该尽量的小,只把最必要的任务放在中断服务程序里面执行。一般在系统启动,硬件设备成功初始化之后将ISR与中断向量挂上:也可以在系统启动后的任何时刻挂中断向量。调试中经常采用后一种方式。在VxWorks中有两个不同的函数可提供挂中断:intConnect和pciIntConnect。两者的区别是intConnect使用的中断向量是独占的,pcilntConnect则可在各个不同的ISR之间共享中断向量。实际上pcilntConnect内部调用了 intConnect函数,在内部使用一个链表来管理多个不同的ISR。pciln
[工业控制]
s3c2440裸机-电阻触摸屏编程(3.触摸屏TSC的初始化和中断服务程序框架)
1. ADC中断产生流程 中断源: 这里是ADC和TSC共用一个中断源。 SRCPND表示哪个中断源产生了中断请求。 INTMODE:配置中断模式 配置中断屏蔽寄存器 中断挂起寄存器(用来显示当前优先级最高的、正在发生的中断, 需要清除对应位) 从SRCPND寄存器可以读到ADC和TSC复用的同一个中断源,那么如何区分呢? 可以从SUBSRCPND寄存器配置,如下: 当bit 9被置1时,表示TSC中断。那么我们需要打开subsrcmask寄存器 所以TSC中断的产生流程如下: 2. TSC编程实现 ①初始化TSC,ADCTSC寄存器 ②设定TSC处于“等待中断模式”
[单片机]
C51中~XBYTE 简介
C51的P0,P2口做外部扩展时使用,其中XBYTE ,P2口对应于地址高位,P0口对应于地址低位。一般P2口用于控制信号,P0口作为数据通道。 XBYTE定义的是外部地址,这样才能和接到你的IO口上的器件通信 在一般的读写外部RAM的程序中,经常看到这样的句子: XBYTE =data 写数据 data=XBYTE 读数据1 外部总线由3组总线组成,数据 地址 控制,我们常常一般就叫他外部总线,既然是有3组不同的信号,那么他们是怎么协调工作的呢?一般情况CPU有特殊的外部数据访问指令如你这里讲51的MOVX指令(在C语言中他会编译成这个指令)在执行这个指令的时候3组线是协调工作 mov dptr,#1000h
[单片机]
在C51中,怎样嵌入汇编语言程序
在C51中,怎样嵌入汇编语言程序?怎样进行处理实现混合编程? 答:其方法是用编译控制指令“#pragma src”、“#pragma asm”和“#pragma endasm”实现。编译控制命令“#pragma src”是控制编译器将C源文件编译成汇编文件,“#pragma src”要放在文件的开始;“#pragma asm”和“#pragma endasm”指示汇编语言程序的开始和结束,分别放在汇编程序段的前面和后面。 对于函数的调用方法,与调用汇编语言中的函数一样, 在C语言文件中调用汇编语言中的函数,必须先声明再调用。声明格式如下: extern 返回值类型 函数名(参数表);
[单片机]
keil5 MDK软件中传统C51与STM32相互兼容的方法
之前单片机刚入门开始学89C51,开发环境为keil4,后来升级到keil5,现在准备学STM32,STM32开发环境为keilMDK,于是找到keilMDK安装包下载之后,才发现他和Atmel、STC的单片机不兼容,于是在百度中寻求让他们兼容的方法,有人说什么更改TOOL文件里的东西,本人尝试了一下也没成功。最近又看到一种方法,十分简单,亲测已经成功完成兼容。于是将此方法写在这里。 1、首先准备普通keil的版本(即C51的,不是MDK版本的),然后按照安装步骤进行安装激活(安装并且进行注册机注册),安装路径任意,但是要记住这个安装路径,因为下一步要用到。 2、第二步进行keilMDK的安装。这是关键性的一步,这一次选择的安
[单片机]