- 87
- 0
- 约2.95千字
- 约 6页
- 2017-08-11 发布于重庆
- 举报
教你如何用C写单片机程序
教你如何用C++写单片机程序
关键词:C++ 面向对象 单片机
从大一就开始学习单片机,学51,AVR编程都使用C语言的风格,即面向过程,只要能画出程序流程图,程序基本就born了。我热衷于编程,尤其是C++,当时想有没有一天,C++的类和对象也能出现在单片机中?
历经世事沧桑,事到如今,我终于有机会,和大家一起学习使用真正面向对象的C++来控制单片机。目前单片机编译器大部分只支持C语言,C++还不够普及,但我们有理由相信,有着更先进的面向对象的理念,有更加平易近人的类和继承,C++必将取代C,成为单片机程序的主流。试看将来环球单片机,必是C++的世界!
下面大家跟着我来一起学习怎么用C++给单片机编程序!本文要求大家玩过AVR单片机,有过C语言编程经验,而且要对VC6.0开发环境有一定了解。
必备软件:VC6.0(用于编辑源程序),WinAVR(用于生成Makefile,支持AVR系列单片机),Proteus(用于仿真调试)。
首先,你的电脑上要装有VC6.0,进入后选菜单【file】---【new】新建工程,如图1选择Makefile工程,输入工程名称,路径,点确定。
图1_新建工程
一路OK建好工程,界面如图2。这个工程是专门写makefile脚本的,你如果学AVR单片机使用avr-gcc那应该对makefile有一定了解,如果想多了解一点详见/view/974566.html?wtp=tt(呵呵,百度百科)。
你还需要安装WINAVR,这是个免费软件,网上很多资源,这个软件很容易安装,一路Next就可以啦!为了使用方便,我的WINAVR安装到了C盘根目录下的WINAVR文件夹。安装好后,可以直接用它来编辑源代码,今天我就不讲它的使用方法了,只讲怎么生成makefile。自我感觉用熟悉的VC6.0环境编写程序心情很愉快,大家还是跟我一起来,打造舒服的编辑环境!建好工程编译成功的界面如图2所示。
图2_工程界面
建好的工程里可以写C++代码了,下面是我要以图3的电路图写一个控制LED亮灭的程序。这个用C很easy,是吧?用Proteus仿真大家应该都会我就不罗嗦了,效果可以看本期附带的视频。
图3_电路图
在工程界面中,点【file】---【new】,选“C++ Source File”,如图4所示,在file一栏中输main点OK,注意一定是main,不要写错,一会就知道为什么了。然后进入编辑页面,我们就可以用C++编写源代码了,呵呵,程序如下,是个非常简单的类LED,短短几行程序展现了一个全新的面貌:没有了C语言的那些函数堆,取而代之的是高效美观的类和对象。
图4_新建文件
源代码:
#include avr/io.h
class LED
{
public:
LED()
{
DDRB|=0x01;
PORTB=~0x01;
}
~LED()
{
DDRB=~0x01;
PORTB=~0x01;
}
void LEDon(void)
{
PORTB=~0x01;
}
void LEDoff(void)
{
PORTB|=0x01;
}
void LEDdelay(void)
{
unsigned int a,b;
for(a=10000;a;a--)
for(b=3000;b;b--);
}
};
int main(void)
{
LED led1;
while(1)
{
led1.LEDoff();
led1.LEDdelay();
led1.LEDon();
led1.LEDdelay();
}
}
编写完后,还需要对工程进行一些配置,大家要沉着冷静,跟我一步一步走,不要贪图路旁的景色。打开菜单【Project】--(【Settings】,在“Build Command Line”中填入“make”,OK,如图5所示。
图5_ProjectSettings
然后打开菜单【Tools】-(【Options】,选“Derectories”标签页,在下拉菜单“Show Directories For”选“Executable Files”,将Winavr的可执行程序路径添加到VC6.0中,这里需要两条: winavr安装路径\bin 和 winavr安装路径\utils\bin就行啦,如图6所示。
图6_Tools
您可能关注的文档
- 实战ActiveDirectory站点部署与管理ActiveDirectory系列之十二.docx
- 实训七管理用户和组.doc
- 实验3(A-D接口实验).doc
- 实验5与数据库连接实现注册与登陆.doc
- 实验一AMI,HDB3传输码型(波形版).doc
- 实验一随机数的产生与Monte-Carlo方法(11本系).doc
- 实验七8031单片机存储器扩展小系统电路原理图设计.docx
- 实验一大肠杆菌基因组提取.doc
- 实验三RNA的提取检测与定量PCR.doc
- 实验6-模具CADCAM系统模块程序设计.docx
- 内蒙古2025年高三“二诊”生物试题含解析.doc
- 2025届福建省厦门市六中学初三5月校际联合考试数学试题含解析.doc
- 江西省南昌石埠中学2024-2025学年八上物理期末达标测试试题含解析.doc
- 湖北省武汉市部分学校2024年数学八上期末调研试题含解析.doc
- 广东省佛山北外附校三水外国语校2024-2025学年初三英语试题查漏补缺专项试题含答案.doc
- 2024年安徽省宣城市名校化学九上期末学业质量监测模拟试题含解析.doc
- 华东政法大学《小动物临床用药专题》2023-2024学年第一学期期末试卷.doc
- 晋中师范高等专科学校《中草药栽培与鉴定专业导论》2023-2024学年第一学期期末试卷.doc
- 贵州省毕节市黔西县树立中学2024-2025学年高三年级调研测试(英语试题)试题含解析.doc
- 贵州省黔东南南苗族侗族自治州雷山县2025年六年级数学第一学期期末学业质量监测模拟试题含解析.doc
原创力文档

文档评论(0)