‘壹’ 51单片机程序编译出现‘Argument':conversion:pointer to non-pointer
是指针转换错误吧,你传汪碰递的是汉字,要看LCD的驱动Write_lcd()是否支持处理汉字,一般LCD厂家提供的处理汉字和字符的驱岁陵郑动函数不一样
Write_lcd(0,1,"液"); 传递给函数的是字符串的指针乎颂,但是函数原型Write_lcd(unsigned int x,unsigned int y,unsigned int word)定义的word是int 类型,也就是说Write_lcd()不支持指针和汉字。
‘贰’ 单片机程序,程序没问题,编译不出来怎么回事
单片机的内存地址0003H是中断子程序入口,你从000H开始编辑程序,然后接了个SJMP跳转到START,但是你的START程序没有另起地址,假设SJMP是两个字节指令的话,那么你的START程序段的地址就是0003H,把中断子程序入口堵住了,所以你的程序就产生了警告。
‘叁’ 不同的单片机如(stc AT PIC) 他们的编译器是否一样,还是要到生产厂家要的编译器才可以把程序编进单片机里
用VC++6.0肯定不行的,用KEILC可以,基本上所有的单片机都可以用KEILC编译。至于下载到单片机那就不一样了,PIC有厂家提供的MPLAB ICD,STC也有厂家提供的专用下载软件。还有部分芯片可用通用编程器写入芯片的。
‘肆’ 如何在Atom编译Arino程序和上传到单片机
如果编译和上传分离到不同的机器上执行,可以使用下面方式。
依赖
安装arino环境
sudo apt-get install arino
编译
在Arino IDE环境下,写好源码程序(以.ino结尾的文件)。然后
Arino -> Preferences ->”Show verbose output ring”选择”compilation”。点击编译,在下方的输出框最后一行显示如下内容
/usr/share/arino/hardware/tools/avr/bin/avr-obj -O ihex -R .eeprom /tmp/build355782919138539048.tmp/Blink.cpp.elf /tmp/build355782919138539048.tmp/Blink.cpp.hex
可以得知, 源码(.ino)编译后生成的二进制文件为/tmp/build355782919138539048.tmp/Blink.cpp.hex
上传
把上一步编译生成的二进制文件上传到arino控制板上。
/usr/share/arino/hardware/tools/avrde -patmega2560 -cwiring -P/dev/ttyACM0 -b115200 -D -Uflash:w:/tmp/build355782919138539048.tmp/Blink.cpp.hex:i
‘伍’ 单片机写程序步骤
给单片机写程序的步骤至少有以下几点:
熟悉或了解目标单片机的性能、资源等等与编程有关的东西。
熟悉或熟练掌握一门编程语言。
准备、配置好一种编译软件。
准备、配置好目标单片机的烧录装置。
‘陆’ 请单片机高手为我解答,我的程序编译不成功,KEIL给出了提示,我想知道错在哪儿 不胜感激!完美者加分!
START:
MOV A, #01010101B
MOV P0,A
LCALL DELAY
; CPL P0 ; CPL 取反指令 为 位操作指令
MOV A, P0 ; 可以 用三条指令代替 ( 或者 用下面 两条就可以 )
CPL A
MOV P0, A
LCALL DELAY
AJMP START
DELAY:
MOV R7, #250
D1:MOV R6,#250
D2:DJNZ R6,D2
DJNZ R7,D1
RET
END
‘柒’ at89c51单片机 如何用c语言编程啊
随着单片机硬件性能的提高,编写应用程序更着重于程序本身的效率。
Franklin或KEII.C51交叉编译器是专为51系列单片机设计的一种高效的C语言编译器,用其开发的应用程序易于维护,可移植性好,是目前较流行的51系列单片机的开发工具。
一、C51语言程序设计的基本技巧
首先,C51语言程序设计要尽可能采用结构化的设计方法。可将整个程序按功能分成若干个模块,不同的模块完成不同的功能。对于不同的功能模块,分别指定相应的入口参数和出口参数,而经常使用的一些程序最好编成函数,这样既不会引起整个程序管理的混乱,还可使程序的可读性、移植性增强。
C51语言的主程序结构:
#include
main0{while(1);}
这是最小的C程序,包括头部文件和程序主体。头部文件为引用的外部资源文件,包括硬件信息和外部模块提供的可使用的函数和变量的说明。
语句定义后,就可以在C语言程序中像汇编一样使用这些硬件设备。
在C5l中常用项目来管理,项目一般分为C文件块和头部文件块,常把不同的功能写在不同的C文件中,依靠项目的管理,最后把所有文件连接起来,这样就可以得到烧录的HEX文件或BIN文件。没有在头部文件中列出的文件,可以算是该C文件的内部函数和变量,外部C不能使用。另外,在程序设计过程中要充分利用C51语言的预处理命令。
对于一些常用的常数,如TRUE、FAlSE、PI,以及各种特殊功能寄存器,或程序中一些重要的依据外界条件可变的常量,可采用宏定义(#de-fine)或集中起来放在一个头文件中进行定义,再采用文件包含命令(#in-elude)将其加入到程序中,这样当需要修改某个参量时,只需修改相应的包含文件或宏定义,而不必对使用它们的每个程序文件都进行修改,有利于文件的维护和更新。
举例:利用宏定义和条件编译,源程序不作任何修改就可适用于不同时钟频率的单片机系统,并可根据情况的不同取不同的delay值,完成不同的目的。程序如下:
#define flag 1#ifdef flag==l#define fose 6Mdelay=10;#elif flag==0#define fose 8Mdelay=12;#else#define fosc 12Mdelay=20;#endiFMain0{ for(I=O;l