学会BASIC,轻松玩转单片机

4 篇文章 0 订阅
4 篇文章 0 订阅

BASIC作为微软帝国的开国元勋,始终未被微软抛弃,即使C#作为微软的第一推荐语言。

BASIC有着语法接近自然语言,语法简单的特点,深受众多程序设计人员的喜爱,不论是国内还是国外,都有着大量的BASIC程序设计人员。

在嵌入式开发领域一直都是C、ASM的天下,如今随着高级程序设计语言的不断发展以及嵌入式MCU硬件资源的集成度越来越高,BASIC语言也被应用到了嵌入式开发中。

今天给大家介绍的是一款完全免费的BASIC单片机开发工具,采用非常接近于Visual BASIC的语法格式,快速的开发单片机应用。

官方网址:https://www.b4x.com/b4r.html(这是一个完全免费的软件,任何人都可以自由下载和传播)

从官网的介绍,它可以为Arduino开发板和ESP8266、ESP32开发板编写程序,并且是本地代码,即HEX。

事实上,随着Arduino开发环境不断的有第三方硬件的支持,B4R将支持更多的开发板。

现在来带领大家领略B4R的开发特点吧。

(1)GPIO就像VB6中的按钮一样简单

从上面的代码,大家可以看到,一个输入按钮被简化成为类似VB6中的按钮一样简单。

Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'Public variables can be accessed from all modules.
    Public Serial1 As Serial
    Public button As Pin    '定义一个按钮
End Sub

Private Sub AppStart
    Serial1.Initialize(115200)
    Log("AppStart")
    button.Initialize(2,button.MODE_INPUT_PULLUP) '初始化GPIO2,并设置为内部上拉输入
    button.AddListener("button_StateChanged")    '绑定到状态变更事件
End Sub

Private Sub button_StateChanged (State As Boolean)
    If State=False Then
        '当按钮被按下时,处理事件
    End If
End Sub

(2)软定时器

Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'Public variables can be accessed from all modules.
    Public Serial1 As Serial
    Public led As Pin    '定义一个指示灯
    Public tme1 As Timer '定义一个软定时器
End Sub

Private Sub AppStart
    Serial1.Initialize(115200)
    Log("AppStart")
    led.Initialize(2,led.MODE_OUTPUT)    '初始化GPIO2为推挽输出
    tme1.Initialize("tme1_Tick",1000) '初始化软件定时器为1秒触发一次
    tme1.Enabled=True '启动定时器
End Sub

Private Sub tme1_Tick
    led.DigitalWrite(Not(led.DigitalRead))    '反转一次LED电平,实现1秒闪烁一次LED
End Sub

软定时器不受硬件定时器数量限制,它就像Basic中的定时器一样的简单,并通过事件的方式驱动。

(3)以太网支持

Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'Public variables can be accessed from all modules.
    Public Serial1 As Serial
    Public eth As Ethernet    '定义以太网接口
    Public udpc As EthernetUDP    '定义一个udp客户端
End Sub

Private Sub AppStart
    Serial1.Initialize(115200)
    Log("AppStart")
    '初始化以太网,并从尝试从DHCP获取IP地址
    If eth.InitializeDHCP(Array As Byte(0x2D,0x0A,0x77,0xFF,0x25,0x40)) Then
        '如果获取成功,则初始化UDP套接字
        If udpc.Initialize(8081,"udpc_PacketArrived")=False Then
            Log("Error UDP.")
        End If
    End If
End Sub


Private Sub udpc_PacketArrived (Data() As Byte, IP() As Byte, Port As UInt)
    '处理UDP数据接收
    If Data(0)=0x22 And Data(1)=0x23 Then
        Log("Command in.")
    End If
End Sub

事实上,B4R所支持的不仅限于此,它大大提高了嵌入式程序开发的效率、代码的可移植性、可维护性,并且支持Arduino的大量开源库,使得程序开发变得更加简单。

到目前为止,B4R可以为Arduino、ESP、nRF52、LGT8、STM32进行程序开发。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值