
1、大多数情况下,单片机运行的程序,都是C语言编写的。不过并不是纯粹的传统C语言,而是变种后的C51语言。
单片机C51语言是由C语言继承而来的。和C语言不同的是,C51语言运行于单片机平台,而C语言则运行于普通的桌面平台。C51语言具有C语言结构清晰的优点,便于学习,同时具有汇编语言的硬件 *** 作能力。对于具有C语言编程基础的工程师,能够轻松地掌握单片机C51语言的程序设计。
2、汇编语言:
汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的 *** 作码,用地址符号(Symbol)或标号(Label)代替指令或 *** 作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。
汇编语言不像其他大多数的程序设计语言一样被广泛用于程序设计。在今天的实际应用中,它通常被应用在底层,硬件 *** 作和高要求的程序优化的场合。驱动程序、嵌入式 *** 作系统和实时运行程序都需要汇编语言。
在一些情况下,C51并不能完美的实现功能,所以汇编语言是对C51的一个重要补充。一般来说,启动部分(基础硬件的初始化),往往是由汇编语言完成的。除此以外,一些要求时效性特别强,效率要求特别高时,也需要使用汇编语言完成。
1、
#include<reg51h>
unsigned char LED;
void t0isr() interrupt
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
P1=LED;
LED=(LED<<1)&0xfe;
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
LED=0x01;
while(1);
}
2、
#include<reg51h>
sbit p11=P1^1;
void t0isr() interrupt
{
TH0=(65536-500)/256;
TL0=(65536-500)%256;
p11=~p11;
}
main()
{
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}
系统晶振是
110592
MHz
ORG
0000H
LJMP
START
ORG
0003H
;INT
0
中断入口地址
LJMP
INT0
ORG
0040H
START:
MOV
SP,#60H
SETB
EX0
;INT
0
中断有效
SETB
IT0
SETB
EA
LCALL
STATUS0
;初始状态(都是红灯)
CIRCLE:
LCALL
STATUS1
;南北绿灯,东西红灯
LCALL
STATUS2
;南北绿灯闪转黄灯,东西红灯
LCALL
STATUS3
;南北红灯,东西绿灯
LCALL
STATUS4
;南北红灯,东西绿灯闪转黄灯
LJMP
CIRCLE
INT0:
PUSH
PSW
;保护现场
PUSH
2
PUSH
ACC
MOV
DPTR,#8300H
MOV
A,#0FH
;南北,东西都亮红灯
MOVX
@DPTR,A
MOV
R2,#100
;延时10秒
LCALL
DELAY
POP
ACC
;恢复现场
MOVX
@DPTR,A
POP
2
POP
PSW
RETI
STATUS0:
;南北红灯,东西红灯
MOV
DPTR,#8300H
MOV
A,#0FH
MOVX
@DPTR,A
MOV
R2,#10
;延时1秒
LCALL
DELAY
RET
STATUS1:
;南北绿灯,东西红灯
MOV
DPTR,#8300H
MOV
A,#96H
;南北绿灯,东西红灯
MOVX
@DPTR,A
MOV
R2,#200
;延时20秒
LCALL
DELAY
RET
STATUS2:
;南北绿灯闪转黄灯,东西红灯
MOV
DPTR,#8300H
MOV
R3,#03H
;绿灯闪3次
FLASH:
MOV
A,#9FH
MOVX
@DPTR,A
MOV
R2,#03H
LCALL
DELAY
MOV
A,#96H
MOVX
@DPTR,A
MOV
R2,#03H
LCALL
DELAY
DJNZ
R3,FLASH
MOV
A,#06H
;南北黄灯,东西红灯
MOVX
@DPTR,A
MOV
R2,#10
;延时1秒
LCALL
DELAY
RET
STATUS3:
;南北红灯,东西绿灯
MOV
DPTR,#8300H
MOV
A,#69H
MOVX
@DPTR,A
MOV
R2,#200
;延时20秒
LCALL
DELAY
RET
STATUS4:
;南北红灯,东西绿灯闪转黄灯
MOV
DPTR,#8300H
MOV
R3,#03H
;绿灯闪3次
FLASH1:
MOV
A,#6FH
MOVX
@DPTR,A
MOV
R2,#03H
LCALL
DELAY
MOV
A,#69H
MOVX
@DPTR,A
MOV
R2,#03H
LCALL
DELAY
DJNZ
R3,FLASH1
MOV
A,#09H
;南北红灯,东西黄灯
MOVX
@DPTR,A
MOV
R2,#10
;延时1秒
LCALL
DELAY
NOP
RET
DELAY:
;延时子程序
PUSH
2
PUSH
1
PUSH
0
DELAY1:
MOV
1,#00H
DELAY2:
MOV
0,#0B2H
DJNZ
0,$
DJNZ
1,DELAY2
;延时
100
mS
DJNZ
2,DELAY1
POP
0
POP
1
POP
2
RET
END
1:针对需要开发的设备构建原理图,可以用AD09,PROTEUS 软件
2:针对需要实现的功能编程,使用KEIL编写调试(51,AVR单片机)
3:程序编好测试,测试包括功能测试,老化测试,可靠性测试等
单片机编程就是简单的嵌入式软件开发过程,首先你应该精通C语言(当然也有使用汇编语言的,不过主流还是使用C的),能够熟练运用C语言实现相应的单片机要实现的功能。所谓的单片机开发,就必须对单片机有一定的了解。这就是为什么嵌入式的工资高,入门难的原因,它必须要有一定的硬件基础,还需配合很好的编码能力。如果你掌握了单片机硬件,同时也精通编程,那么写单片机程序也就是水到渠成的事了。
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。
单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。
以上就是关于单片机用什么语言编写程序全部的内容,包括:单片机用什么语言编写程序、单片机编程、用单片机汇编写一个程序,求高手帮忙等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)