【入门】Linux上搭建51单片机开发环境(二) —— Hello World

3 篇文章 1 订阅
2 篇文章 0 订阅

1. 写一个流水灯程序

使用中断切换LED的高低电平

在一个 flow_led.c 中 粘贴如下代码:

#include<8051.h>

unsigned char i = 0;
unsigned char zheng = 1;

void main(void) {


    TH0 = 1;
    TL0 = 1;
    TMOD = 0x01;
    ET0 = 0x01;
    EA = 1;
    TR0 = 1;

    while (1) {
        if (i >= 7) zheng = 0;
        if (i <= 0) zheng = 1;
    }

}

void inter(void) __interrupt 1 {
    TH0 = 1;
    TL0 = 1;

	// 此处将 P0、P1、P2 引脚同时 切换 高低电平
    P0 = ~(1 << i);
    P1 = ~(1 << i);
    P2 = ~(1 << i);
    if(zheng == 1)    {
        i++;
    }else{
        i--;
    }
}

2. 编译文件

flow_led.c 文件目录下执行如下命令:

sdcc flow_led.c

编译成功后,当前目录下会生成如下文件:

asm 		汇编代码
ihx 			16进制代码
lk  
lst 
map 
mem 
rel 
rst 
sym 

2. 使用hex2bin将ihx文件转换为bin文件

hex2bin flow_led.ihx

执行上面命令,生成bin文件

3. 查看单片机的串口信息

根据上一篇文章下载的 pyserial ,获取串口信息

pyserial-ports

执行效果如下:
在这里插入图片描述

4. 烧写程序到单片机

stcgal -P stc89 -p /dev/cu.usbserial-14240 flow_led.bin

在显示如下信息时,给单片机上电:

Waiting for MCU, please cycle power:

执行后显示如下信息:

Waiting for MCU, please cycle power: done
Target model:
  Name: STC89C52RC/LE52R
  Magic: F002
  Code flash: 8.0 KB
  EEPROM flash: 6.0 KB
Target frequency: 12.010 MHz
Target BSL version: 6.6C
Target options:
  cpu_6t_enabled=False
  bsl_pindetect_enabled=False
  eeprom_erase_enabled=False
  clock_gain=high
  ale_enabled=True
  xram_enabled=True
  watchdog_por_enabled=False
Loading flash: 212 bytes (Binary)
Switching to 19200 baud: checking setting testing done
Erasing 2 blocks: done
Writing flash: 640 Bytes [00:00, 2024.23 Bytes/s]                     
done
Disconnected!

未完待续~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值