首页 > 其他分享 >SDCC+XMAKE 51内核单片机排坑

SDCC+XMAKE 51内核单片机排坑

时间:2022-10-07 01:55:17浏览次数:72  
标签:__ XMAKE 排坑 -- 51 单片机 xmake nop

  1. xmake是一款很方便的构建工具,只要在工程文件写入一个xmake.lua文件即可,以51单片机为例:
target("test_xmake")  -- 目标
    set_kind("binary")  -- 生成二进制
    add_includedirs("./core") -- 导入核心库头文件
    add_includedirs("./bsp") --导入板上库头文件
    add_files("./bsp/*.c") --导入板上库
    add_files("./main.c") --导入主程序

2. xmake已经支持sdcc,可以很方便的使用预设的工具链来设置工程,注意设置平台参数和sdk地址,编译后生成bin文件,目前支持stm8、mcs51、z80、z180、r2k、r3ka、s08、hc08。

$ xmake f -p cross --toolchain=sdcc -a mcs51 --sdk="C:\SDCC"
$ xmake

3. SDCC是一款开源的单片机编译器,支持51内核,PIC16,PIC18,stm8单片机等单机,这里主要用于51内核单片机的排坑,其语法与keil区别如下:

(1 ) 没有__nop__()函数,用以下宏定义直接使用汇编语言的NOP解决。

#define _nop_() __asm nop __endasm  //定义_nop_() 用于nop

(2) sfr和sbit寄存器定义采用at方式,范例如下,STC系列的头文件转换可以使用这里大佬所写的C#程序批量解决。

__sfr __at (0x80) P0;  
__sbit __at (0x80) P00 ; 

(3)中断关键字为__interrupt,并且需要在主函数进行声明,否则无法进入中断。如下:

// main.c
void UART1_Isr() __interrupt 4;
void main(){
   ...
}


//uart.c
void UART1_Isr() __interrupt 4
{

}

(4)SDCC默认为小RAM编译模式,推荐

(4)其他语法使用标准C90语法,不使用如bit等非标准语法。

标签:__,XMAKE,排坑,--,51,单片机,xmake,nop
From: https://www.cnblogs.com/ataoblog/p/16758988.html

相关文章

  • javascript:得到变量类型的方法(chrome 105.0.5195.125)
    一,js代码:<html><head><metacharset="utf-8"/><title>测试</title></head><body><script>//一,用typeof得到变量的类型letone='a';console.log(ty......
  • 新概念第一册51~60单元学习笔记
    Chapterfifty-one:ApleasantclimateDialogueWheredoucomefrom?#相似句whereareyoufromIcomefromGreece#what'ssb/sthlike句式What'stheclimatelikein......
  • 518.coin-change-ii 零钱兑换II
    问题描述518.零钱兑换II解题思路本题依旧是一个完全背包问题,但是本题求的是组合而非排列。求组合时,先遍历物品,再遍历体积;求排列时,则是先遍历体积,再遍历物品。例如:假设......
  • 希腊人欢呼雀跃,他们完全支持涅斯托耳51
    希腊人欢呼雀跃,他们完全支持涅斯托耳http://m.ds.163.com/feed/633897b2c470740001380d6d/?2022_1005=20221005uhttp://m.ds.163.com/article/633897b339677300015cb816/?20......
  • 洛谷1351 -- 联合权值
      遍历一遍树,在遍历的同时,传入节点u的父亲和祖父,计算答案#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>usingnamespacestd;......
  • 联想z510硬件升级记录
    这几天电脑用的非常卡,盘都是红的,严重干扰了正常工作,因此开始了我的升级工作。1.备份资料。原有硬盘数据一定好做好备份。其中应用程序的数据需要做导出工作。......
  • 正经人谁记日记 2022-09-25 周日 21:51:39
    做时间的主人书是人类进步的阶梯作者:DATA_MONK​,转载请注明原文链接​......
  • 【树上背包】洛谷 P4516 [JSOI2018] 潜入行动
    P4516[JSOI2018]潜入行动省选/NOI-、树上背包计数题意略设状态为\(dp[u][j][0/1][0/1]\),u点子树放了j个装置,u点有没有放装置,u点有没有被监听的方案数。对......
  • 【TS】251- TypeScript 3.5发布:速度提升、工具智能
    TypeScript3.5发布了,此版本在编译器、语言和编辑器工具上带来了一些新特性。速度提升TypeScript3.5引入了几种对于type检查和增量构建的优化,使得速度大幅提升。type......
  • [CF1051F] The Shortest Statement
    CF1051FTheShortestStatement-洛谷|计算机科学教育新生态(luogu.com.cn)突破口肯定在\(m-n\le20\)上面,然后图又是联通的,实际上也就是\(n-1\lem\len......