自制的PIC18Fxxxx系列C编译,请提意见

[复制链接]
11606|52
 楼主| su_mj000 发表于 2008-4-14 02:27 | 显示全部楼层 |阅读模式
https://bbs.21ic.com/upfiles/img/20084/200841415844641.rar<br />https://bbs.21ic.com/upfiles/img/20084/20084142054155.rar<br /><br />因文件夹超过300KB只得分成两次上传。下载后须将后者放入前者的文件夹中。<br /><br />本C编译一起的最大特点是:(1)简单易用,几分钟内便轻松上手。(2)能支<br />持扩展指令(使用&nbsp;-X&nbsp;选项);(3)即使在传统指令下,也能支持函数的递归<br />调用。(4)支持各类指针。(5)支持镕丝(fuse)和EEPROM;(6)优化较好,<br />不用调整BSR寄存器。<br /><br />弱点:(1)暂不支持浮点运算;(2)预处理器功能较差;(3)不支持结构<br />中的位定义。(4)只在DOS下运行。<br /><br />用户手册还未完成。下面仅给出一些必需的命令格式和语法要点:<br />[1]&nbsp;下载和装配:解压即可,设置路径名。<br />[2]&nbsp;编译命令:<br />&nbsp;&nbsp;&nbsp;&nbsp;p18cc&nbsp;main.c&nbsp;timer.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;对文件(main.c&nbsp;及timer.c)进行编译&nbsp;(传统指令)<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;p18cc&nbsp;-X&nbsp;main.c&nbsp;timer.c&nbsp;&nbsp;&nbsp;///&nbsp;对文件(main.c&nbsp;及timer.c)进行编译&nbsp;(扩展指令)<br /><br />[3]&nbsp;汇编命令:<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;as18&nbsp;main.asm&nbsp;timer.asm&nbsp;&nbsp;&nbsp;///&nbsp;汇编命令,产生可浮动目标文件。<br /><br />[4]&nbsp;连接命令:<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;lk18&nbsp;main.obj&nbsp;timer.obj&nbsp;-o&nbsp;main&nbsp;///&nbsp;连接可浮动目标文件,产生main.hex和main.map文件。<br /><br /><br />[5]&nbsp;中断服务子程序:<br /><br />&nbsp;&nbsp;&nbsp;interrupt&nbsp;()&nbsp;@&nbsp;0x08&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;高优选级中断入口。<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;........<br />&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;interrupt&nbsp;()&nbsp;@&nbsp;0x18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;低优选级中断入口。<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;........<br />&nbsp;&nbsp;&nbsp;}<br /><br /><br />[6]&nbsp;flash中常量数据的存取<br /><br />&nbsp;&nbsp;&nbsp;int&nbsp;*p,&nbsp;n;<br />&nbsp;&nbsp;&nbsp;...&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;n&nbsp;=&nbsp;_rom_&nbsp;(p);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;_rom_&nbsp;()&nbsp;是编译保留函数,用以对flash&nbsp;ROM的读取。<br /><br /><br />&nbsp;&nbsp;&nbsp;rom&nbsp;char&nbsp;a[]&nbsp;=&nbsp;&quot;abcdefg&quot;;&nbsp;&nbsp;&nbsp;///&nbsp;rom&nbsp;是关键字,比const更强制。<br /><br />+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br /><br />&nbsp;&nbsp;&nbsp;欢迎提出您的宝贵意见!<br /><br />+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br /><br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /> 相关链接:<a href='https://bbs.21ic.com/upfiles/img/20084/20084142054155.rar'>https://bbs.21ic.com/upfiles/img/20084/20084142054155.rar</a>
 楼主| su_mj000 发表于 2008-4-14 02:27 | 显示全部楼层

谢10楼的好意

看了海尔芯片上海公司的招聘要求。对招聘要求中的有几条<br />觉得还马虎可以。但最后一条好像觉得无法达到。算了!<br /><br />谢谢10楼的好意,心领了!
lanyong 发表于 2008-4-14 02:27 | 显示全部楼层

兄弟

可以去试下,最后一条应该也没什么啊.<br /><br />有两条路.<br />如果你真想做这个而不是玩的话.<br /><br />1:去家大公司.<br />2:找几个人做个小公司<br />www.ccsinfo.com<br />应该是家小公司,人家做编译器一样做得很好.
xieyuanbin 发表于 2008-4-14 08:12 | 显示全部楼层

奖励楼主的精神

先穿裤子,再下载慢慢看
 楼主| su_mj000 发表于 2008-4-14 09:08 | 显示全部楼层

小例子

简单的例子:<br /><br />///////////////////////////////////////////////////////////<br />#include&nbsp;&ltpic18f1220.h&gt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使用PIC18F1220定义库<br /><br />#pragma&nbsp;void_return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;此函数不需返回,节省ROM<br />void&nbsp;main&nbsp;()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;bank0&nbsp;char&nbsp;a;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;只有bank0需定义,可节省ROM<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;TRISB&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设定PORTB为输出<br />&nbsp;&nbsp;&nbsp;&nbsp;for(;;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LATB++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;从PORTB口述出不同分频的方波<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(a&nbsp;=&nbsp;0;&nbsp;--a;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;延时<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}
lanyong 发表于 2008-4-14 11:40 | 显示全部楼层

厉害,搞C编译器

搞好了,前途无限,嘿嘿.
兰天白云 发表于 2008-4-14 18:33 | 显示全部楼层

头回听说,还以为看错了

支持
nilau 发表于 2008-4-15 08:19 | 显示全部楼层

强大

ocon 发表于 2008-4-16 03:13 | 显示全部楼层

哗~叹为观止,真的假的啊?

 楼主| su_mj000 发表于 2008-4-16 05:28 | 显示全部楼层

试一试便知真假,请提意见

不可否认的是,编译器的设计很难。P18CC的源代码全部是白手起家,<br />一个字符一个字符地输入,其中的数据结构很复杂,几句话是讲不明<br />白的。<br /><br />已经使用该改编译器做了一个MP3,用pic18f2520控制,下面是main()<br />的代码:<br /><br />#include&nbsp;&ltp18f2520.h&gt<br />#include&nbsp;&ltstdio.h&gt<br />#include&nbsp;&quot;define.h&quot;<br />#include&nbsp;&quot;timer0.h&quot;<br />#include&nbsp;&quot;pwr.h&quot;<br />#include&nbsp;&quot;spi.h&quot;<br />#include&nbsp;&quot;key.h&quot;<br />#include&nbsp;&quot;vs1011.h&quot;<br />#include&nbsp;&quot;lcd3310.h&quot;<br />#include&nbsp;&quot;nokialcd.h&quot;<br />#include&nbsp;&quot;mmcfile.h&quot;<br />#include&nbsp;&quot;play.h&quot;<br /><br />#pragma&nbsp;CONFIG1H&nbsp;&nbsp;&nbsp;&nbsp;0x88<br />#pragma&nbsp;CONFIG2L&nbsp;&nbsp;&nbsp;&nbsp;0x1e<br />#pragma&nbsp;CONFIG2H&nbsp;&nbsp;&nbsp;&nbsp;0x1e<br />#pragma&nbsp;CONFIG3H&nbsp;&nbsp;&nbsp;&nbsp;0x81<br />#pragma&nbsp;CONFIG4L&nbsp;&nbsp;&nbsp;&nbsp;0xc1<br /><br />//#pragma&nbsp;short_branch<br />//#pragma&nbsp;short_call<br /><br />enum&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;MP3_READY,<br />&nbsp;&nbsp;&nbsp;&nbsp;MP3_PLAY,<br />&nbsp;&nbsp;&nbsp;&nbsp;MP3_PAUSE,<br />&nbsp;&nbsp;&nbsp;&nbsp;MP3_STOP,<br />&nbsp;&nbsp;&nbsp;&nbsp;MP3_SKIP,<br />&nbsp;&nbsp;&nbsp;&nbsp;MP3_DELAY<br />};<br /><br />void&nbsp;turn_off&nbsp;(void);<br />char&nbsp;key_process&nbsp;(char&nbsp;mp3_status,&nbsp;unsigned&nbsp;int&nbsp;*music_cnt);<br />void&nbsp;VS1011_test&nbsp;(void);<br /><br />//char&nbsp;*string3&nbsp;=&nbsp;&quot;MMC&nbsp;file&nbsp;ok!&quot;;<br /><br />////////////////////////////////////////////////////////////////////<br />#pragma&nbsp;void_return<br />void&nbsp;main&nbsp;()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;bank0&nbsp;static&nbsp;unsigned&nbsp;char&nbsp;mp3_status&nbsp;=&nbsp;MP3_READY;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ADCON1&nbsp;&nbsp;&nbsp;=&nbsp;0x07;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;set&nbsp;PORTA&nbsp;as&nbsp;digital&nbsp;port<br />&nbsp;&nbsp;&nbsp;&nbsp;OSCCON&nbsp;&nbsp;&nbsp;=&nbsp;0x60;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;INCOSC&nbsp;block&nbsp;on:&nbsp;4MHz,&nbsp;primary&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;OSCTUNE&nbsp;|=&nbsp;0x4f;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;PLLEN&nbsp;=&nbsp;1:&nbsp;enable&nbsp;PLLx4<br />//&nbsp;&nbsp;&nbsp;&nbsp;PLLEN&nbsp;&nbsp;&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;PLLEN&nbsp;=&nbsp;0:&nbsp;disable&nbsp;PLLx4<br />&nbsp;&nbsp;&nbsp;&nbsp;SWDTEN&nbsp;&nbsp;=&nbsp;0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;LATC&nbsp;&nbsp;|=&nbsp;&nbsp;3;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;LED&nbsp;pin&nbsp;init<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISC&nbsp;&=&nbsp;~3;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;CMCON&nbsp;&nbsp;=&nbsp;0x02;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;comparator&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;CVRCON&nbsp;=&nbsp;0xc0&nbsp;+&nbsp;10;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;reference&nbsp;valtage&nbsp;mode&nbsp;and&nbsp;voltage<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;KEY_init&nbsp;();<br />&nbsp;&nbsp;&nbsp;&nbsp;TMR0_Init&nbsp;();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;&nbsp;&nbsp;&nbsp;devices&nbsp;initialization&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;SPI_init&nbsp;();<br />&nbsp;&nbsp;&nbsp;&nbsp;VS1011_init&nbsp;();<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_init&nbsp;();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;wait&nbsp;for&nbsp;power&nbsp;buttom&nbsp;really&nbsp;pressed<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(&nbsp;PWR_status&nbsp;==&nbsp;PWR_INIT&nbsp;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;TRISA&nbsp;&=&nbsp;~(1&nbsp;&lt&lt&nbsp;3);<br />&nbsp;&nbsp;&nbsp;&nbsp;LATA&nbsp;&nbsp;|=&nbsp;&nbsp;(1&nbsp;&lt&lt&nbsp;3);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(;;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_clear();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_write_stringROM&nbsp;(0,&nbsp;1,&nbsp;&quot;Check&nbsp;MMC&nbsp;SPI&nbsp;&quot;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;MMC_Init&nbsp;()&nbsp;!=&nbsp;MMC_OK&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_clear();<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;LCD_write_stringROM&nbsp;(0,&nbsp;1,&nbsp;&quot;MMC&nbsp;SPI&nbsp;not&nbsp;OK!&quot;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;PWR_status&nbsp;==&nbsp;PWR_OFF&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;turn_off&nbsp;();<br /><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;continue;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_write_stringROM&nbsp;(0,&nbsp;1,&nbsp;&quot;MMC&nbsp;SPI&nbsp;OK!&quot;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;FILE_InitEntry&nbsp;()&nbsp;==&nbsp;FILE_OK&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_write_stringROM&nbsp;(0,&nbsp;1,&nbsp;&quot;MMC&nbsp;file&nbsp;OK!&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_write_stringROM&nbsp;(0,&nbsp;2,&nbsp;&quot;search...&quot;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PLAY_ctrlBlk.totalMusic&nbsp;&nbsp;&nbsp;=&nbsp;FILE_searchMP3Files&nbsp;();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PLAY_ctrlBlk.currentMusic&nbsp;=&nbsp;1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mp3_status&nbsp;=&nbsp;MP3_READY;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VS1011_setVol&nbsp;(30);<br /><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;while&nbsp;(&nbsp;PWR_status&nbsp;!=&nbsp;PWR_OFF&nbsp;)<br />&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;if&nbsp;(&nbsp;PLAY_ctrlBlk.currentMusic&nbsp;&gt&nbsp;PLAY_ctrlBlk.totalMusic&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PLAY_ctrlBlk.currentMusic&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(&nbsp;PLAY_ctrlBlk.currentMusic&nbsp;==&nbsp;0&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PLAY_ctrlBlk.currentMusic&nbsp;=&nbsp;PLAY_ctrlBlk.totalMusic;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileDesc_t&nbsp;*fp&nbsp;=&nbsp;FILE_FindFile&nbsp;(PLAY_ctrlBlk.currentMusic);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;fp&nbsp;==&nbsp;NULL&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PLAY_init&nbsp;(fp);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;play_status,&nbsp;delay_time;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;play_status&nbsp;=&nbsp;PLAY_OK;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do<br />&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;mp3_status&nbsp;=&nbsp;key_process&nbsp;(mp3_status,&nbsp;&PLAY_ctrlBlk.currentMusic);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(&nbsp;mp3_status&nbsp;)<br />&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;case&nbsp;MP3_PLAY:<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;play_status&nbsp;=&nbsp;PLAY_music&nbsp;(0);<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;break;<br /><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;case&nbsp;MP3_SKIP:<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;PLAY_music&nbsp;(100);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;skip&nbsp;100&nbsp;sectors&nbsp;of&nbsp;data<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;delay_time&nbsp;=&nbsp;TMR0_cnt;<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;mp3_status&nbsp;=&nbsp;MP3_DELAY;<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;break;<br /><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;case&nbsp;MP3_DELAY:<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;if&nbsp;(&nbsp;TMR0_Elapsed&nbsp;(delay_time)&nbsp;&gt=&nbsp;(750/5)&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;mp3_status&nbsp;=&nbsp;MP3_PLAY;<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;break;<br /><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;case&nbsp;MP3_STOP:<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;PLAY_fade_out&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;play_status&nbsp;=&nbsp;PLAY_DONE;<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;mp3_status&nbsp;&nbsp;=&nbsp;MP3_READY;<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;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;while&nbsp;(&nbsp;play_status&nbsp;!=&nbsp;PLAY_DONE&nbsp;&&&nbsp;play_status&nbsp;!=&nbsp;PLAY_ERR&nbsp;&&&nbsp;PWR_status&nbsp;!=&nbsp;PWR_OFF&nbsp;);<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;mp3_status&nbsp;==&nbsp;MP3_PLAY&nbsp;&&&nbsp;play_status&nbsp;==&nbsp;PLAY_DONE&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PLAY_ctrlBlk.currentMusic++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;PWR_status&nbsp;==&nbsp;PWR_OFF&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;turn_off&nbsp;();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />/////////////////////////////////////////////////////////////////////////<br />#pragma&nbsp;void_return<br />void&nbsp;turn_off&nbsp;(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_clear();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(;;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LATA&nbsp;&=&nbsp;~(1&nbsp;&lt&lt&nbsp;3);<br />}<br /><br />/////////////////////////////////////////////////////////////////////////<br />char&nbsp;key_process&nbsp;(char&nbsp;mp3_status,&nbsp;unsigned&nbsp;int&nbsp;*music_cnt)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(&nbsp;KEY_get&nbsp;()&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;KEY_PLAY:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(&nbsp;mp3_status&nbsp;)<br />&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;case&nbsp;MP3_READY:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MP3_PAUSE:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KEY_ctrl&nbsp;=&nbsp;MODE_KEY_DISABLED;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;MP3_PLAY;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MP3_PLAY:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KEY_ctrl&nbsp;=&nbsp;MODE_KEY_ENABLED;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;MP3_PAUSE;<br />&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;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;KEY_UP:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(&nbsp;mp3_status&nbsp;)<br />&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;case&nbsp;MP3_PLAY:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WREG&nbsp;=&nbsp;VS1011_incVol&nbsp;();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_volStatus&nbsp;(WREG);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MP3_READY:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MP3_PAUSE:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*music_cnt)++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;MP3_STOP;<br />&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;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;KEY_DOWN:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(&nbsp;mp3_status&nbsp;)<br />&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;case&nbsp;MP3_PLAY:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WREG&nbsp;=&nbsp;VS1011_decVol&nbsp;();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_volStatus&nbsp;(WREG);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MP3_READY:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MP3_PAUSE:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*music_cnt)--;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;MP3_STOP;<br />&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;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;KEY_UP&nbsp;|&nbsp;KEY_MODE:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;mp3_status&nbsp;==&nbsp;MP3_PLAY&nbsp;||&nbsp;mp3_status&nbsp;==&nbsp;MP3_DELAY&nbsp;)<br />&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;if&nbsp;(&nbsp;mp3_status&nbsp;==&nbsp;MP3_PLAY&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;fade&nbsp;out&nbsp;the&nbsp;sound<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PLAY_fade_out&nbsp;();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;when&nbsp;in&nbsp;PLAY&nbsp;status,<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;&nbsp;//&nbsp;to&nbsp;reduce&nbsp;jitter<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;MP3_SKIP;<br />&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;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;KEY_MODE:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KEY_ctrl&nbsp;=&nbsp;MODE_KEY_DISABLED;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;MP3_STOP;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;mp3_status;<br />}<br /><br />
lanyong 发表于 2008-4-16 10:23 | 显示全部楼层

妈哟,国家应该要支持你这样的人才才是啊!

都不知道哪些税收跑哪里去了哦.<br /><br />兄弟,加油搞,赚点欧元回来.
lanyong 发表于 2008-4-16 10:28 | 显示全部楼层

su_mj000,

海尔芯片上海公司在找象你这样的人才,你要不去试下?
chunk 发表于 2008-4-16 10:30 | 显示全部楼层

总算有人研究这个方面了。

大家都爱喊“我们用自主研发的核”,然后您再看那编译器,那开发工具,唉。。。。。
lanyong 发表于 2008-4-16 10:30 | 显示全部楼层

地址:

http://www.ichaier.com/hr/hrdetail.php?hr_id=16
lanyong 发表于 2008-4-16 10:33 | 显示全部楼层

?21ic中毒了

怎么发表日期:<br />lanyong&nbsp;发表于&nbsp;2007-6-1&nbsp;10:30&nbsp;PIC&nbsp;单片机<br /><br />去年儿童节?
xwj 发表于 2008-4-16 10:51 | 显示全部楼层

呵呵,别着急,明天就改成愚人节了

本来流星JJ想先回顾下愚人节的,<br />但是二姨说她想过儿童节<br />匠人JJ又说她想过三八节<br />...<br /><br /><br />最后还是二姨最大,二姨说了算...<br />
ocon 发表于 2008-4-16 16:34 | 显示全部楼层

www.ccsinfo.com的编译器确实做得不错,特别是帮助做得很棒。

02年做网络监测设备的时候买过他们的编译器,通过一个老外买的,加上手册不到四千*币。
and 发表于 2008-4-16 21:19 | 显示全部楼层

原来是真家伙

一个字符一个字符地输入,其中的数据结构很复杂,几句话是讲不明白的。<br />-----<br />来道个喜,^_^
lifengtao 发表于 2008-4-16 21:53 | 显示全部楼层

对楼主 五体投地 般的佩服

国家幸甚啊~~~~<br />觉得楼主的十分之一&nbsp;也比那些所谓的超男超女强一百倍,让那些垃圾在时间中消亡吧~~<br />楼主一定要**住啊,“天将降大任于……”&nbsp;希望楼主像周立功那样有一番自己的事业啊,到时候我们能真正用上自己的单片机,在安上地道的国产编译器,那做出来的产品再卖给外国人,那是什么感觉~~&nbsp;希望大家努力!
lanyong 发表于 2008-4-17 09:37 | 显示全部楼层

su_mj000兄弟

如果你愿意我帮你去联系海尔上海,你看怎么样?<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

286

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部