单片机
躺卧青草地上
从事嵌入式、人工智能软件开发
展开
-
在51系列中data,idata,xdata,pdata的区别
从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率(此问题将在后面专门讲述)。与ANSI-C稍有不同,它...转载 2013-03-05 17:16:29 · 484 阅读 · 0 评论 -
c51 函数库函数 STDIO.H:一般I/O函数
c51 函数 (3) 3.2 STDIO.H:一般I/O函数 在头文件中增加include <stdio.h> C51编译器包含字符I/O函数,它们通过处理器的串行接口操作,为支持其它I/O机制,只需修改_getkey()和putchar()函数,其它所有I/O支持函数依赖这两个模块,不需要改动。在使用8051串行口之前,必须将它们初始化,下例以...转载 2013-01-10 14:54:47 · 2946 阅读 · 0 评论 -
keilc51可重入函数及模拟栈浅析 (1)
1、关于可重入函数(可再入函数)和模拟堆栈(仿真堆栈) “可重入函数可以被一个以上的任务调用,而不必担心数据被破坏。可重入函数任何时候都可以被中断,一段时间以后又可以运行,而相应的数据不会丢失。”(摘自嵌入式实时操作系统uC/OS-II) 在理解上述概念之前,必须先说一下keilc51的“覆盖技术”。(采用该技术的原因请看附录中一网友的解释) (1)局部变量存储在全局RAM空间(...转载 2013-03-05 15:48:15 · 818 阅读 · 0 评论 -
Keil51 WARNING L15: MULTIPLE CALL TO SEGMENT
今天调试时遇到了这个问题,以前都不注意这些警告错误,现在看来争取要做到:0错误,0警告。中断中和中断外都调用了同一个串口打印函数,一直有上述的报警,没在意,今天调试时发现串口打印出了一些乱七八糟的东东,且程序也不知道跑哪里去了,很郁闷。最后查到是上述这个问题导致的,现在解决办法为采用第二种办法,第一种办法据说要耗很多存储空间,以后慢慢体会。说说几个小问题吧,一般我们在用KEIL的时候,只要编译器...转载 2013-03-05 16:05:46 · 874 阅读 · 0 评论 -
how to use the volatile keyword keil51 ?
1. 例如对外部寄存器的读写。 对有些外部设备的寄存器来说,读写操作可能都会引发一定硬件操作,但是如果不加volatile,编译器会把这些寄存器作为普通变量处理,例如连续多次的对同一地址写入,会被优化为只有最后一次的写入。实际上,网卡的数据发送,就是按顺序连续往一个同地址写入数据,如果被优化,网卡将不能正常驱动。对于外部寄存器的读写,经常用 XBYTE,其实你看一下...转载 2013-03-05 17:08:33 · 530 阅读 · 0 评论