用c++怎样编写51单片机程序

用c++怎样编写51单片机程序,第1张

相信很多初学者都有同样的疑问,也有同样的希望。就是用C++语言来写单片机程序的源代码。现在我来解释一下单片机的源代码程序几乎没有人用C++来写的。\x0d\1 假设一下你现在用C++写完了一个程序代码。那么你要让单片机认识必须要编译吧,对吧 。请问你有合适的编译软件来编译你的代码吗?\x0d\2 就算有编译器能编译,你能保证它的代码效率一定能给单片机用吗?\x0d\ 单片机的ROM是K级的水平,执行指令的速度也远远小于PC。绝对不能和PC机相比的。这个就决定了单片机编程时很多时候要考虑它的代码效率和代码大小问题。所以一般情况下对于单片机编程我们之用汇编语言或者C语言。就算是用C写程序也要注意代码的效率等问题。\x0d\ 还有就是只有很大型的项目及应用程序开发才有可能有C++来写程序。一般的系统文件,应用程序都是用C来写的。有的系统代码甚至要用汇编语言来写。\x0d\举个生活中的例子:如果你从家里去公司上班你一般的出行方式是什么?\x0d\1坐公车 2骑车 3自己开车 4坐地铁 5走过去。如果谁说他是做直升飞机去上班的。那要么这个人脑子不正常,要么就是太有钱了炫富。如果你要打苍蝇用苍蝇拍子就行了。如果要你用巡航导d来打苍蝇,你认为可能吗?\x0d\ 所以我们单片机写程序的话一般就是汇编语言和C语言。几乎没有人用C++语言的。

我来答

1假定16个数放在20H为首的地址里,送到目的50H为首的地址里

LOOP:

MOV R0,#20H

MOV R1,#50H

MOV A,@R0

MOV @R1,A

INC R0

INC R1

CJNE R0,#30H,LOOP;当inc r0 前,R0=2FH,加1后R0+1=30H,不跳转

2假定16个数放在内部RAM20H为首的地址里,送到外部RAM目的0010H为首的地址里

MOV R0,#20H

MOV DPTR,#0010H

MOV A,@R0

MOVX @DPTR,A

INC R0

INC DPTR

CJNE R0,#30H,LOOP;当R0=2FH时,R0+1=30H,不跳转

3将外部RAM以1000H为首的16个数据放入,外部RAM以2000h为首的地址内

MOV R7,#0FH

MOV DPTR,#1000H;将源地址放入第一个DPTR

INC AUXR1;转换指针,指向第二个DPTR

MOV DPTR,#2000H;将目的地址放入第二个DPTR

INC AUXR1;指向源dptr

LOOP:

MOV A,@DPTR;将源地址数据放入A

INC DPTR;源地址加1

INC AUXR1;转换为目的地址

MOV @DPTR,A;将A内容放入目的地址

INC DPTR;目的地址加1

INC AURX1;指向源地址

DJNZ R7,LOOP;R7减1,循环,减15次

/对于个单片机的初学者,我希望用最直观的方式来达到你要的要求,程序每一句我已经写好备注,希望对你有帮助/

#include<reg51h> //使用51功能头文件

sbit L1=P0^0; //L1对应P00,表示第一盏灯

sbit L2=P0^1; //L1对应P01,表示第二盏灯

sbit L3=P0^2; //L1对应P02,表示第三盏灯

sbit L4=P0^3; //L1对应P03,表示第四盏灯

void delay(unsigned int i) //延迟子程序,注意这里的unsigned int i,这里相当于限定了调用时候变量的类型

{

unsigned char j; //局部变量定义

while(i--) //循环i次,主程序main调用时候,i为100,这数值你可随便该,但小于65355

for(j = 200; j > 0; j--) ; //这步的意思是空 *** 作200次,也就是暂用CPU200次的工作时间

}

void main(void) //主函数,这里的viod是无类型,意思是没有给这函数指定数据类型

{

P0=0x00; //将P0口初始化位高电平,如果没有这句,初始化为低电平,这里可根据需要选择

L1=1; //第一盏灯亮

delay(100); //调用延时子程序

L2=1; //第二盏灯亮

delay(100); //调用延时子程序

L3=1; //第三盏灯亮

delay(100); //调用延时子程序

L4=1; //第四盏灯亮

delay(100); //调用延时子程序

while(1); //这里我用了个死循环,目的程序只运行一次,如果需要自动重新运行,可以把这句删掉

}

纯手工书写,并仿真调试过,记得加分哟~

看你的程序,你的电路图应该是这样的吧(用P20做片选)

锯齿波源程序如下:

ORG 0000H

AJMP START

ORG 0050H

START:    MOV DPTR,#0FEFFH

LP:        MOV A,#00H

LP1:       MOVX @DPTR,A

INC A

AJMP LP1

  END

三角波源程序如下:

ORG 0000H

AJMP START

ORG 0050H

START:   MOV DPTR,#0FEFFH

TRI:       MOV A,#00H

UP:       MOVX @DPTR,A

INC A

CJNE A,#0FFH,UP

DOWN:  MOVX @DPTR,A

DEC A

CJNE A,#00H,DOWN

LJMP UP

END

以上就是关于用c++怎样编写51单片机程序全部的内容,包括:用c++怎样编写51单片机程序、求单片机数据传送试验源程序、急需单片机高手帮忙用C语言写一个单片机4个灯轮流闪亮的源程序。 详细内容看补充。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9743856.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存