找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5243|回复: 0
收起左侧

单片机编程语言

[复制链接]
ID:68618 发表于 2014-12-9 13:18 | 显示全部楼层 |阅读模式

前言
编程语言也就是"计算机语音"。相对于PC或电脑来说,Microcontroller(微控制器,俗称单片机)编程语言则是嵌入式编程语言。由于单片机编程与硬件紧密相连,故其软件又成为"固件(firmware)"。随着硬件性能的提升,编程语言也在发生着变化。
机器语言
早期的编程使用的是机器语言。需要将程序的机器指令一位一位地输入到单片机中,或者将指令做成纸带输入到单片机,进行计算。
图 1 纸带

汇编语言
随着发展,人们开始用指令助记符替代机器语言,于是就有了汇编语言。汇编语言书写的效率大大地提高了。直到现在还有好多人在使用汇编语言进行程序设计。
图 2 汇编语言
stm8/

    #include "mapping.inc"
    #include "stm8s_conf.inc"
   
    segment 'rom'

    BRES PB_DDR,#7         ;input
    BSET PB_CR1,#7         ;Pull-up
    BSET PB_CR2,#7                ;with interrupt
                                            
    BSET EXTI_CR1,#2         ;01: Rising edge only
    BRES EXTI_CR1,#3

    LD A,#$CC
    LD IWDG_KR,A

    LD A,$55
    LD IWDG_KR,A
    LD A,$2
    LD IWDG_PR,A            
    LD A,$FF
    LD IWDG_RLR,A
    MOV IWDG_KR,#$AA

……

C语言
为了提高代码书写效率,出现了高级的语音-C语音。 C语言的出现,使得人书写代码更容易,也更容易移植到不同的平台中。
图 3 C语言
int i = 0;
unsigned char uc = 0;
unsigned long Temp;

ADC_CR1 |= 0x01;
i = 6;
while(i--);
ADC_CR1 |= 0x01;
while(!(ADC_CSR & 0x80));

AD_Value = ((((unsigned int)ADC_DRH)<<2)+ADC_DRL);
TIM2_CCR2H=0x00;
TIM2_CCR2L=(unsigned char)(AD_Value>>2);

if (AD_Value>0x10)
{
Temp=(unsigned char)(AD_Value>>8);

if ((TIM3_ARRH>Temp+0x05)||(TIM3_ARRH<Temp-0x05))
{
TIM3_ARRH = Temp;
TIM3_ARRL = (unsigned char)(AD_Value&0xff);
TIM3_CCR1H = (unsigned char)(AD_Value>>9);
TIM3_CCR1L = (unsigned char)((AD_Value>>1)&0xff);
}
}
while ( uc < duration )
{
while ( i < 1200 )
{
i++;
}
i = 0;
uc++;
}
……

Arduino
Arduino是一种开源硬件,可以让电子爱好者很快设计出产品的原型来。设计趋向于简单化。

图形化编程
借助电脑软件,出现了图形化配置的软件。可以帮助工程师迅速配置一些底层的寄存器外设等。简化了程序设计流程。
图 4 图形初始化配置

近些年也有了不少的图形化编程和仿真软件。在提升书写代码效率的同时,也在改变着人们的编程习惯。
图 5 FlowCode

图 6 Proteus

编程语言的进化
从机器语言到C语音,从C语言到图形化配置、编程、仿真。人与机器的交互方式在发生着变化。编程语言在不断地进化。人与计算机沟通更为越来越接近,沟通越来越容易。代码会逐步进化到接近人的表达语言的方式。但作为汉字的编程语言方面尚没有太大的突破,或许将来会有。
产品与艺术一样都来自于人的生活。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表