智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 17450|回复: 38
打印 上一主题 下一主题

飞思卡尔单片机C语言编程框架

  [复制链接]

0

主题

100

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1775
威望
1452
贡献
273
兑换币
4
注册时间
2008-3-4
在线时间
25 小时
跳转到指定楼层
1#
发表于 2008-3-8 00:13:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
<>1978年美国贝尔实验室正式发表C语言,后来美国在此基础上制定了一个C语言标准于1983年发表即 ANSI C。</P><P>学习一种编程语言,需用一个好的编程环境,Freescale为广大的用户提供了免费的Codewarrior集成开发系统。为用户快速步入单片机的C语言编程提供一个很好的平台。</P><P>Codewarrior一般按照工程进行文件的管理。一个工程包含的文件无非就是,C文件, H文件, Lib文件和内存分配文件。项目的框架如下所示:</P><P>/*-----------------------------------------------------*<BR>*工 程 名rgframe.mcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *<BR>*硬件连接:PTA.1接指示灯&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *<BR>*程序描述:指示灯PTA.1闪烁&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *<BR>*目&nbsp;&nbsp;&nbsp;&nbsp; 的:第一个freescale(Motorola) HC08系列MCU程序框架*<BR>*说&nbsp;&nbsp;&nbsp;&nbsp; 明:提供Motorola MCU的编程框架,供教学入门使用&nbsp;&nbsp;&nbsp; *<BR>*注&nbsp;&nbsp;&nbsp;&nbsp; 意:如果延时不够长的话,会发觉灯不会闪烁,而是一 *<BR>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 直亮,这是由于人的视觉的引起的。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<BR>/*[头文件]*/<BR>#i nclude "GP32C.h"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //映像寄存器地址头文件<BR>/*[指示灯所接引脚定义]*/<BR>#define&nbsp;&nbsp; Light_P&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PTA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //灯(Light)接在PTA口<BR>#define&nbsp;&nbsp; Light_D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DDRA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //相应的方向寄存器<BR>#define&nbsp;&nbsp; Light_Pin&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //灯所在的引脚<BR>/*[全局变量声明]*/<BR>unsigned char I1;<BR>/*[延时子函数声明]*/<BR>void Delay1000(void);<BR>/*[主函数]*/<BR>void main()<BR>&nbsp;&nbsp; {&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //[I/O初始化]<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Light_D|=1&lt;&lt;Light_Pin;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //令指示灯引脚为输出<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Light_P|=1&lt;&lt;Light_Pin;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //初始时,指示灯"暗"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //[程序总循环入口]<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //指示灯(Light)“亮”<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Light_P&amp;=~(1&lt;&lt;Light_Pin); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //延时<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(I1=0;I1&lt;=250;I1++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Delay1000(); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //指示灯(Light)"暗”&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Light_P|=1&lt;&lt;Light_Pin;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //延时&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(I1=0;I1&lt;=250;I1++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Delay1000(); <BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp; }<BR>/*[内部子程序存放处]<BR>/*Delay1000:延时1000个时钟周期-------------------------*&nbsp;&nbsp;&nbsp;&nbsp;<BR>*功&nbsp;&nbsp; 能:延时函数(约1000个时钟周期)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *<BR>*参&nbsp;&nbsp; 数:无&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *<BR>*返&nbsp;&nbsp; 回:无&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *<BR>*-----------------------------------------------------*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>void Delay1000(void)<BR>&nbsp;&nbsp; {&nbsp;&nbsp; unsigned char u; <BR>&nbsp;&nbsp;&nbsp;&nbsp; for(u=0;u&lt;=110;u++);<BR>&nbsp;&nbsp; }</P>

0

主题

100

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1775
威望
1452
贡献
273
兑换币
4
注册时间
2008-3-4
在线时间
25 小时
2#
 楼主| 发表于 2008-3-8 00:18:42 | 只看该作者

Re:飞思卡尔单片机C语言编程框架

希望这个编程框架能对单片机C语言编程还不熟悉的人有点帮助,嘿嘿~
回复 支持 反对

使用道具 举报

0

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
威望
215
贡献
28
兑换币
0
注册时间
2008-3-4
在线时间
8 小时
3#
发表于 2008-3-11 06:34:15 | 只看该作者

Re:飞思卡尔单片机C语言编程框架

<>我有个问题</P><P>我说了你们不要笑啊~</P><P>Light_D|=1&lt;&lt;Light_Pin;</P><P>这句偶看不懂</P><P>记得学C的时候没有见过这种语法啊</P><P>是C++吗?</P>
回复 支持 反对

使用道具 举报

0

主题

100

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1775
威望
1452
贡献
273
兑换币
4
注册时间
2008-3-4
在线时间
25 小时
4#
 楼主| 发表于 2008-3-11 18:23:58 | 只看该作者

Re:Re:飞思卡尔单片机C语言编程框架

<>Light_D|=1&lt;&lt;Light_Pin;&nbsp; </P><P>它的意思为:将Light_Pin的值左移一位,然后将得到的值与Light_D的值取或,最后将取或后得到的值赋给Light_D</P><P>这句还可以这样写:Light_D=Light_D|(1&lt;&lt;Light_Pin);</P>
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
QQ
威望
180
贡献
22
兑换币
0
注册时间
2008-1-2
在线时间
1 小时
5#
发表于 2008-3-25 04:21:37 | 只看该作者

Re:飞思卡尔单片机C语言编程框架

谢谢版主拉
回复 支持 反对

使用道具 举报

0

主题

294

帖子

1

精华

功勋会员

Rank: 10Rank: 10Rank: 10

积分
4132

特殊贡献奖章

QQ
威望
2661
贡献
1407
兑换币
33
注册时间
2007-11-22
在线时间
32 小时
6#
发表于 2008-4-11 01:53:23 | 只看该作者

Re:飞思卡尔单片机C语言编程框架

<>最好再附上.prm的程序框架</P>
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
123
威望
171
贡献
22
兑换币
0
注册时间
2008-4-12
在线时间
0 小时
7#
发表于 2008-4-12 03:30:52 | 只看该作者

Re:飞思卡尔单片机C语言编程框架

<>我想问一下</P><P>&nbsp;HC08系列MCU程序和S12系列的C程序有没有明显的区别啊</P><P>主要的区别在哪里啊</P>
回复 支持 反对

使用道具 举报

0

主题

107

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
326
QQ
威望
298
贡献
22
兑换币
0
注册时间
2008-7-9
在线时间
3 小时
8#
发表于 2008-7-10 08:34:20 | 只看该作者

Re:飞思卡尔单片机C语言编程框架

谢谢阿 对我帮助很大
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
124
威望
172
贡献
22
兑换币
0
注册时间
2008-7-29
在线时间
0 小时
9#
发表于 2008-7-29 01:09:24 | 只看该作者

Re:飞思卡尔单片机C语言编程框架

<>Light_D|=1&lt;&lt;Light_Pin;&nbsp;</P><P>的正确理解应该是把数1(即:二进制数0000 0001)左移Light_Pin位(1位),注意&lt;&lt;后面的是要移几位。得到二进制数0000 0010,再将这个数和Light_D或运算。</P>
回复 支持 反对

使用道具 举报

0

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
228
威望
206
贡献
22
兑换币
0
注册时间
2008-7-21
在线时间
0 小时
10#
发表于 2008-8-2 06:51:52 | 只看该作者

Re:飞思卡尔单片机C语言编程框架

<>楼主辛苦了啊!收下!</P>
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-28 19:20 , Processed in 0.062008 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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