Codeblocks配置SDCC实现51单片机定时器功能(proteus仿真)

版权声明:本文为博主ouening原创文章,未经博主允许不得恶意复制转载,需要注明出处,尊重知识成果!技术交流请联系[email protected]! https://blog.csdn.net/ouening/article/details/71547108

Tools:

1)Codeblocks
2)SDCC (Small Device C Compiler)
3)Proteus

SDCC是免费开源的编译器,可以用来编译8051系列的芯片,也就是我们平时使用的51单片机可以用此编译,而不是使用KEIL商业软件,IDE配合Codeblocks,最终验证用proteus仿真验证,手头上没有51开发板。

SDCC和Codeblocks在网上搜索就能找到,对于SDCC的资料网上非常少,自己收集了一些,就在此记录一下.

过程

1)安装code blocks,安装SDCC
2)

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

输入一下代码,有注释


#include <mcs51reg.h>
// #include <mcs51/8051.h>

void timer() __interrupt 1; // SDCC的中断函数要预先声明,区别于KEIL C51

unsigned char counter; // 软件计数器
void main()
{
    TMOD = 0x00;    // 定时器0_16位计数
    TH0 = 0xb1;     // 经计算定时20ms初值是0xB1E0,分高8位和低8位写
    TL0 = 0xe0;
    TR0 = 1;        // 定时器开始运行
    ET0 = 1;        // 开定时器0中断开关
    EA = 1;         // 开启总中断
    while(1)
    {
        ;           // 进入循环,不断触发定时器中断
    }
}

void timer() __interrupt 1
{
   counter++;
   if(counter==50)
   {
      counter = 0;
      P1_2 = !P1_2;
   }
}

3)
最后建立一个proteus仿真文件,选择刚才编译生成的hex文件就可以看到效果了,SDCC的中断函数要声明的,这个和KEIL C不同
这里写图片描述

和KEILC的差别:
这里写图片描述

参考链接:http://whchen.net/blog/index.php/archives/sdcc-simple-to-use-tutorial.html


关于SDCC的使用可以参看另一篇博文基于51单片机实现的电机PWM控制及测速(Proteus仿真)

猜你喜欢

转载自blog.csdn.net/ouening/article/details/71547108