推荐阅读最新更新时间:2024-03-16 15:25
C51里的函数指针
在C语言里面提供了函数指针,我认为它比较重要的功能就是用来提供接口,使得C语言可以模拟面向对象的语言为某些功能提供接口,实现功能代码的隔离。 这不,前些日子写了个小程序,用C51写的,其中有个功能就是操作液晶屏,在上面显示菜单、输出结果什么的。在我看来,这部分功能使用函数指针最好不过了。譬如,不管是什么菜单,总得要显示出来吧,定义一个show()接口就好。这样上层代码很简单,反正对每个菜单都调用其show()接口,它们自己完成显示。 嗯,可是想法是好的,结果是不妙的。首先这么做在C51的语法层面上没有任何问题,编译后没有任何错误。可是实际运行时就发现一些奇怪的现象,譬如调用某个函数,明明入口参数的值是100,跑到函数内部就
[单片机]
【C51】源码 5 -- LCD 1602 显示字符
LCD 1602,正式说法叫 LCM 1602(包括了一些外围电路),一般用来显示简单的字符,也可以通过自定义的方式 造字 。 刚学会基本的字符显示,仅仅是字符显示就大量应用了各种指令格式,姑且在这个阶段写个程序,总结一下: 程序功能:在 LCD 正中央显示字符: Hello World 、 By Fate 注:LCD 1602 的使用: http://gaebolg.blog.163.com/blog/static/198269068201231665524137/ 附上源码:(初出茅庐,难免有写的不好的地方,仅作备份之用,欢迎指点,喷子退散 ) /*----------------------------------
[单片机]
深入剖析keil c51 --- 从汇编到c51
C插入汇编语句 #pragma asm ljmp 0 #pragma endasm 如果就这样直接编译的话,会出现以下错误: error C272: 'asm/endasm' requires src-control to be active 解决方法:在 Files Toolbar 中选中当前C51文件,点右键查看文件选项,将 Generate Assembler SRC File 与 Assemble SRC File 的勾选由灰色变为黑色,即使这两项有效! 第一节 main()函数和启动代码 汇编是从org 0000h开始启动,那么keil c51是如何启动main()函数的?keil c
[单片机]
单片机C51汇编指令之寻址方式学习心得
1.寄存器寻址 指令举例:MOV A,R0 该指令功能:将寄存器R0中的内容送累加器A中 详细说明:假设R0中的内容是16进制数20H,那么执行这条指令之后,累加器A中的内容是20H 即十进制数:32 2.直接寻址 指令举例:MOV A,30H 该指令功能:将地址单元30H中的内容送累加器A中 详细说明:假设地址单元30H中的内容是20H,那么执行该指令之后,累加器A中的内容是:20H 即十进制数32 3.寄存器间接寻址 指令举例:MOV A,@R0 该指令功能:将R0指向的内存单元中的内容送累加器A中 详细说明:为和寄存器直接寻址区别,汇编语言中,寄存器间接寻址中的寄存器前面会加上一个
[单片机]
STC89C52与AT24C02按字节写(C51)
#include reg52.h #include intrins.h #define uchar unsigned char uchar i,a; uchar code table ={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8}; sbit wp=P1^0; sbit scl=P1^1; sbit sda=P1^2; sbit led=P2^0; void delay() { _nop_(); _nop_(); _nop_(); } void de1s() //误差 0us { unsigned char a,b,c; for(c=167;c 0;c--)
[单片机]
lcd液晶12232F的串口C51程序
由于12232F这个显示器用得比较平常,但平常见到的是一些并口的汇编程序,并且也没有对应于12232F的并口程序,串口的C51程序极少见,为了方便大家使用,所以本站把它调试了一个出来,大家多多指教! 由于12232F这个显示器用得比较平常,但平常见到的是一些并口的汇编程序,并且也没有对应于12232F的并口程序,串口的C51程序极少见,为了方便大家使用,所以本站把它调试了一个出来,大家多多指教! /******************************************************/ /* 12232F串口驱动程序C51,11.0592M晶振 */ /*使用这款LCD应该要注意的问题: */ z /
[单片机]
ASM51调用C51函数的实现
MCS-51系列单片机在目前和今后的相当一段时间内都将是我国的单片机主流机种。但在早期的开发过程中,程序员不得不从深奥的汇编语言开始摸索,同时要求开发人员对硬件亦有相当的子解。相比而言,专用8051系列单片机设计的Franklin C51语言是一种通用的高级结构化的程序设计语言。入门容易,程序可读性强,调试、移植都很方便,故开发效率高,尤其在数值运算处理方便具有很大的优势(这正是ASM51汇编语言的薄弱环节)。不过,C语言虽然也可对计算机的硬件系统进行操作,但在处理特殊I/O口和中断向量方面,不如汇编那样直接、有效。因而,在效率为重的今天,将ASM51汇编与C51语言结合起来,充分发挥各自的优势,无疑是单片机开发人员的最佳选
[单片机]
S51的由来及与C51的区别
AT89很多初学51单片机的网友会有这样的问题:AT89S51是什么?书上和网络教程上可都是8051,89C51等!没听说过有89S51,这里,初学者要澄清单片机实际使用方面的一个产品概念,MCS-51单片机是美国INTEL公司于1980年推出的产品,典型产品有 8031(内部没有程序存储器,实际使用方面已经被市场淘汰)、8051(芯片采用HMOS,功耗是630mW,是89C51的5倍,实际使用方面已经被市场淘汰)和8751等通用产品,一直到现在, MCS-51内核系列兼容的单片机仍是应用的主流产品(比如目前流行的89S51、已经停产的89C51等),各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习。
[单片机]