找回密码
 立即注册
查看: 503|回复: 2

Keil-------VSCODE 语法高亮兼容方案

[复制链接]
  • TA的每日心情
    开心
    昨天 07:10
  • 签到天数: 165 天

    [LV.7]常住居民III

    11

    主题

    69

    回帖

    2858

    积分

    金牌会员

    单片机编程魔法师

    积分
    2858
    发表于 2023-4-19 21:25:27 | 显示全部楼层 |阅读模式
    本帖最后由 t176 于 2023-4-20 01:05 编辑
    1. /***
    2. * !!! 不要在项目中包含此文件!,它只能用于代码分析! !!!
    3. */
    4. // 非 KEIL 编译器,定义调试宏
    5. /*-中断号
    6. INT0        0
    7. Timer0        1
    8. INT1        2
    9. Timer1        3
    10. UART1        4
    11. ADC 5
    12. LVD        6
    13. UART2        8
    14. SPI        9
    15. INT2        10
    16. INT3        11
    17. Timer2        12
    18. INT4        16
    19. UART3        17
    20. UART4        18
    21. Timer3        19
    22. Timer4        20
    23. CMP        21
    24. I2C        24
    25. USB        25
    26. PWMA        26
    27. PWMB        27
    28. CANBUS        28
    29. CAN2BUS        29
    30. LINBUS        30
    31. RTC        36
    32. P0 中断        37
    33. P1 中断        38
    34. P2 中断        39
    35. P3 中断        40
    36. P4 中断        41
    37. P5 中断        42
    38. P6 中断        43
    39. P7 中断        44
    40. DMA_M2M 中断        47
    41. DMA_ADC 中断        48
    42. DMA_SPI        49
    43. DMA_UR1T        50
    44. DMA_UR1R        51
    45. DMA_UR2T        52
    46. DMA_UR2R        53
    47. DMA_UR3T        54
    48. DMA_UR3R        55
    49. DMA_UR4T        56
    50. DMA_UR4R        57
    51. DMA_LCM        58
    52. LCM        59
    53. DMA_I2CT        60
    54. DMA_I2CR        61
    55. I2S        62
    56. DMA_I2ST        63
    57. DMA_I2SR        64
    58. */
    59. #define interrupt
    60. // 定义中断、使用、地址和优先级宏
    61. #define using      /*--使用--*/
    62. #define _at_       /*--@地址--*/
    63. #define _priority_ /*--优先级--*/
    64. #define _task_     /*--任务--*/
    65. // 定义存储类型宏
    66. #define reentrant // 可重入函数 (列如递归写法,修饰函数)
    67. #define compact   // 使用外部RAM区
    68. #define small     // 全部缺省变量均位于外部RAM区的一页,优势是空间较Small为宽裕速度较Small慢,较large要快,是一种中间状态。
    69. #define large     // 全部缺省变量可放在外部RAM区,优势是空间大,可存变量多,缺点是速度较慢。提示:存储模式在C51编译器选项中选择
    70. #define data      // 默认的数据存储空间
    71. #define bdata     // 用于定义只占用一个位(bit)的变量
    72. #define idata     // 特殊存储空间
    73. #define pdata     // 位于内存地址范围0x00~0xFF之间的数据空间。它用于存储动态变量(例如堆栈)和局部变量
    74. #define xdata     // 是一种特殊的存储器空间,它位于8051芯片的外部RAM中,相比于data空间更大
    75. #define code      // 将变量放在ROM(Flash)中
    76. // 内部类型宏,包括位(bit)、特殊位(sbit)和特殊功能寄存器(sfr)
    77. typedef bit bit;     /*--位--*/
    78. typedef sbit sbit;   /*--特殊位--*/
    79. typedef sfr sfr;     /*--特殊功能寄存器--*/
    80. typedef sfr16 sfr16; /*--特殊功能寄存器16--*/
    81. typedef sfr32 sfr32; /*--特殊功能寄存器32--*/
    复制代码

    前言:
    针对VSCODE 开发环境下,没有bit/sbit/interrupt等等,因包含非标准C语言关键词(keil 特有关键字)导致不兼容语法高亮失效,解决方案.
    使用方法:
    1. #if !defined(__C251__) && !defined(__C51__)
    2. #include "../debug/debug.h"
    3. #endif
    复制代码




    效果展示:
    这是没做环境兼容的效果,由于interrupt为非标准关键字,导致整个函数内,语法高亮失效.
    未做兼容.png


    下面是包含兼容头文件后的效果
    兼容后.png





    喜欢研究如何让电子产品变得更加智能和有趣.
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    前天 22:44
  • 签到天数: 157 天

    [LV.7]常住居民III

    9

    主题

    306

    回帖

    3751

    积分

    荣誉版主

    积分
    3751
    发表于 2023-4-19 21:36:32 | 显示全部楼层


    我也使用头文件对编译器进行区分以及兼容vscode高亮
    判断vscode和keil可以通过是否定义__C51__宏来判断,因此可以不用手动注释


    Screenshot 2023-04-19 213443.png Screenshot 2023-04-19 213445.png

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 07:10
  • 签到天数: 165 天

    [LV.7]常住居民III

    11

    主题

    69

    回帖

    2858

    积分

    金牌会员

    单片机编程魔法师

    积分
    2858
     楼主| 发表于 2023-4-19 21:38:06 | 显示全部楼层
    kksk 发表于 2023-4-19 21:36
    我也使用头文件对编译器进行区分以及兼容vscode高亮
    判断vscode和keil可以通过是否定义__C51__宏来判断, ...

    优秀
    喜欢研究如何让电子产品变得更加智能和有趣.
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-11 01:55 , Processed in 0.058154 second(s), 39 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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