网站大量收购独家精品文档,联系QQ:2885784924

M16C族单片机编程入门.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
M16C族单片机编程入门 M16C族单片机为原三菱电机生产的16位CISC微控制器。 主要特点为: 低电压,低功耗,抗干扰性强 具备大容量FLASH ROM, SRAM 丰富的外设,如定时器,AD,DA,CAN控制器等 所有这些特性,使M16C广泛应用汽车,电动车,工业设备及家电产品上。 下面我们讲讲如何在M16C平台下编程。 1. 使用HEW新建一个工程。 打开HEW,选择Create a new project workspace,点OK。 选择CPU family,这里我们选择M16C选项。 工具链Tool chain我们默认选择Renesas M16C Standard。 好了,接下来我们要输入一个工程名字,在workspace name里输入m16c_test。 接下来,注意,也是最重要的一步,在左边的project types下面,我们选择C source startup Application这个选项,该选项的含义是你将建立一个C语言开始的工程。当然,如果选择第一个Application,则为汇编语言开始的工程。 考虑到大多数朋友对M16C的汇编不是很熟悉,我们这里以C语言工程为参考。 点确定后,继续选择工具链版本5.43.00,CPU Series我选择为M16C/60, CPU Group我选择为6N4,然后点next,继续点next使用默认选项,最后选择targets为M16C E8a SYSTEM,这是是你的CPU要用到的仿真器,我们一般使用瑞萨产的小型ON Chip debugger仿真器E8a. 点next,最后点Finish。OK,我们的一个C语言工程已经建好了。 2. 工程源文件分析 我们发现我们建的m16c_test工程里面有一些源代码文件。下面我们对这些文件进行分析。 (注意:建立工程时,选择不同的选项可能会产生不同的源代码文件,不过这不影响我们的使用) m16c_test.c 源代码: /*****************************/ void main(void) { ? } 该文件是main()函数。你的所有应用函数都会在main()里调用 resetprg.c 源代码: /*****************************/ #include sfr6n4.h #include typedefine.h #include resetprg.h extern _UINT??? _stack_top,_istack_top; //DEF_BANKSELECT; DEF_SBREGISTER; #pragma entry start void start(void); extern void initsct(void); extern void _init(void); void exit(void); void main(void); #pragma section program interrupt void start(void) { ?_isp_?= _istack_top; ?// set interrupt stack pointer ?prcr?= 0x02;??// change protect mode register ?pm0?= 0x00;??// set processor mode register ?prcr?= 0x00;??// change protect mode register ?_flg_?= __F_value__;?// set flag register #if __STACKSIZE__!=0 ?_sp_?= _stack_top; ?// set user stack pointer #endif ?_sb_?= 0x400;?// 400H fixation (Do not change) ?// set variable vectors address ?_asm(?ldc?#((topof vector)16)0FFFFh,INTBH); ?_asm(?ldc?#(topof vector)0FFFFh,INTBL); ?initsct();??// initlalize each sections #if __HEAPSIZE__ != 0 ?heap_init();??// initialize heap #endif #if __STANDARD_IO__ != 0 ?_init();???// initialize standard I/O #endif ?_fb_ = 0;?// initialize FB registe for debugger ?main();???// call

文档评论(0)

zhuliyan1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档