国庆!菜鸟学C写的第一个程序!

[复制链接]
2810|9
 楼主| fengyeu 发表于 2007-10-7 16:23 | 显示全部楼层 |阅读模式
菜鸟学C写的第一个程序!<br />要求从PC用COM口下一个32位数据的字模到52缓存,然后用16X16LED点点阵显示!<br />目前程序还有问题下数据后&nbsp;偶尔显示正确!<br />还请各路高手指教一下!<br />/////////////////////////////////////////////////////////////////////<br />/******************************************************************<br /><br />led.C&nbsp;&nbsp;file<br />Created&nbsp;by&nbsp;fengyeu<br />Date:&nbsp;2007.10.5<br />Edit&nbsp;date:2007.10.6<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />*******************************************************************/<br /><br />#include&nbsp;&quot;reg52.h&quot;<br /><br />sbit&nbsp;G=P1^4;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//P1.7为显示颜色控制信号端口<br />sbit&nbsp;R=P1^5;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//P1.6为显示颜色控制信号端口<br />unsigned&nbsp;char&nbsp;radd=0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//接收计数<br />unsigned&nbsp;char&nbsp;data_buf[32];<br />long&nbsp;int&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;0x01;<br /><br />//------------延时函数--------//<br />void&nbsp;delay(unsigned&nbsp;int&nbsp;dt)<br />{<br />&nbsp;&nbsp;register&nbsp;unsigned&nbsp;char&nbsp;bt;<br />&nbsp;&nbsp;for(;dt&gt1;dt--)<br />&nbsp;&nbsp;for(bt=0;bt&lt255;bt++);<br />}<br />//---------颜色控制------------//<br />color2()<br />{<br />G=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//绿<br />R=1;<br />}<br />//------------串口中断部分-------//<br />void&nbsp;Init_Com(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TMOD&nbsp;=&nbsp;0x20;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PCON&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SCON&nbsp;=&nbsp;0x50;&nbsp;&nbsp;&nbsp;&nbsp;//;串口为方式1&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;UART<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TH1&nbsp;=&nbsp;0xfd;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TL1&nbsp;=&nbsp;0xfd;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TR1&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//;波特率9600<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REN&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ES&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EA&nbsp;=&nbsp;1;<br />}<br />void&nbsp;ComInt()&nbsp;interrupt&nbsp;4<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;dat;<br />&nbsp;&nbsp;&nbsp;&nbsp;ES&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;RI&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;dat&nbsp;=&nbsp;SBUF;<br />&nbsp;&nbsp;&nbsp;&nbsp;radd++;<br />&nbsp;&nbsp;&nbsp;&nbsp;data_buf&nbsp;=&nbsp;dat;<br />&nbsp;&nbsp;&nbsp;&nbsp;i++;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SBUF&nbsp;=&nbsp;dat;<br />&nbsp;&nbsp;&nbsp;&nbsp;do{}while(&nbsp;TI&nbsp;==&nbsp;0&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;TI&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;ES&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br />//------------------------<br />void&nbsp;Com_start(void)<br />{<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;Init_Com();<br />&nbsp;&nbsp;if(radd&gt=32)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;radd=0x00;<br />&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;{<br />//----------------------------<br />&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;k=0xf0;<br />&nbsp;&nbsp;&nbsp;char&nbsp;dd=1;<br />//------------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;for(k=0xf0;dd&lt32;)&nbsp;//单字扫描;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P1=0xff;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color2();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P1=(P1&k);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P0&nbsp;=&nbsp;data_buf[dd];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//写上半屏<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dd++;&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;P2&nbsp;=&nbsp;data_buf[dd];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dd++;&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;k++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(k&gt0xff)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k=0xf0;<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;上16列&nbsp;+&nbsp;下16列&nbsp;(32)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay(2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//此延时为显示一个字后&nbsp;加亮LED<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P0=0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//去鬼影/去重影<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P2=0x00;&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;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />}<br />//---------主函数&nbsp;&nbsp;---------//<br />void&nbsp;main(void)<br />{&nbsp;<br />&nbsp;&nbsp;P3=0xff;&nbsp;&nbsp;&nbsp;&nbsp;//io初始化<br />&nbsp;&nbsp;P1=0xff;<br />&nbsp;&nbsp;P0=0x00;<br />&nbsp;&nbsp;P2=0x00;<br />&nbsp;&nbsp;Com_start();&nbsp;&nbsp;&nbsp;&nbsp;//开串口<br />&nbsp;&nbsp;color2();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//绿&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}
123654789 发表于 2007-10-7 16:25 | 显示全部楼层

楼主 的 程序 是 51系列

为什么&nbsp;发表&nbsp;到&nbsp;ARM<br /><br />难道&nbsp;???
 楼主| fengyeu 发表于 2007-10-7 16:34 | 显示全部楼层

因为ARM里高手多

因为ARM里高手多<br />原理图
 楼主| fengyeu 发表于 2007-10-7 16:50 | 显示全部楼层

本来想有2440做的但是没有外扩接口

本来想用2440做的但是没有外扩&nbsp;接口&nbsp;排线。(小的那种)<br />还有如果用2440的话是不是需要,加3.3转5V借口电路啊?<br />还有如果用2440的话是不是需要,加3.3转5V借口电路啊?<br /><br />现在主要是把C练好?
阿南 发表于 2007-10-7 17:38 | 显示全部楼层

专门学C的最好方法还是脱离硬件,在PC机上为好,

windows、Linux都可以!<br />为了更好更快的得到别人的解答,楼主去侃单片版发帖会比较合适,呵呵!祝好
sodwell 发表于 2007-10-7 18:55 | 显示全部楼层

re

没事就写C语言库函数!
 楼主| fengyeu 发表于 2007-10-7 20:03 | 显示全部楼层

阿南说的也对看来我要把51换成2440了

阿南说的也对看来我要把51换成2440了<br />我前些日子,<br />买2440是因为2440开发板,的硬件资源丰富。<br />IIC&nbsp;IIS&nbsp;&nbsp;COM&nbsp;SPI等等都有,软硬件一起学<br />我就一个人,没有精力自己做。<br />只有买开发板了<br />除了论坛&nbsp;也,没有人可问了!<br />孤独中。。。。。。。。。。。<br /><br />
 楼主| fengyeu 发表于 2007-10-8 12:42 | 显示全部楼层

大跃进??

我只是想有那位同志!<br />能够帮我看看问题错在那里!<br />我自己也在检查。在想,<br />每个人的学习方法不同!(给我点自由吧)?<br />呵呵!<br />哎我还是去单片机栏去吧?<br /><br />
arder 发表于 2007-10-10 14:30 | 显示全部楼层

学习开发板

http://www.myesw.cn<br />电子方案网,提供各种廉价学习开发板。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

446

帖子

0

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