原创 初学新华龙单片机的艰难过程--点亮发光二极管都好费劲

2009-7-30 14:16 5896 9 14 分类: MCU/ 嵌入式

        我从别人那里拿到一块带有新华龙单片机的实验板,准备试一些小程序.单片机型号是C8051F005,由于我知道它也是51内核,所以我也没太细看数据手册,就开始写个小程序做实验.


        我看到单片机的I/O口接有一个发光二极管,我就寻思着先从这里开始吧,先写个小程序,把发光二极管点亮再说.然后我就写了一条CLR指令(发光二极管负极接的I/O口),然后就让把程序输到芯片中,结果发光二极管一直不亮!我想了想,有两个可能,一个是一开始没加延时程序,一个是可能单片机复位后电流驱动能力太差。然后我就加了个延时程序,又看了下数据手册,将对应的I/O口改成了推挽输出。可是程序运行后,发光二极管还是不亮。我想不出为什么来,单步调了半天,程序执行了CLR指令后,对应的I/O口却还是高电平!哎,没办法,只好再慢慢看数据手册。从手册中得知,在使用I/O口之前,还需要使能交叉开关,我在程序里再加了这样一条指令后,可发光二极管还是不亮!!这下怎么办呢?单步调试下吧,结果发现好象前边的延时太长,总也执行不完。我就把延时时间改少了好多,这下,谢天谢地,发光二极管终于亮了。


        在点亮发光二极管后,我就打算做个循环,让它闪亮。结果我又写一段程序,延时点亮,再延时后熄灭,如此循环。可是就这么简单的一个小程序,还是有毛病!我看着发光二极管亮的时间长,灭的时间很短。进一步的实验发现,延时周期短的话正常,延时时间长的话就不正常了,甚至发光二极管基本不灭了。那我只好重新单步调试了,可是这样太慢了,IDE里边的多步配置的修改不起作用,而且新华龙的IDE也不能观察程序段运行的时间。后来我发现IDE里边有个“watchpoints”的变量监视的功能还是挺好用的,然后我再设置一些断点(真奇怪为什么在新华龙的IDE里边最多只能设四个断点),研究了半天后发现,程序会在延时程序中一段程序后突然跳转到程序开始处,也就是程序总会自己复位。为什么会自己复位呢?电源不稳?但那样的话不可能总是在那个程序位置电源电压不稳啊,其它的外设也没开,看门狗应该也启动。我只好去看数据手册的复位源部分,结果让我吃了一惊,复位后看门狗居然就是开着的!我就写了一条MOV WDTCN,0xA5指令,然后程序一运行,发光二极管又不亮了!!这次的错误很明显,把0xA5改成00A5H就可以了,但我不明白为什么这样的程序也编译通过。而在运行程序时,程序到这一行程序就复位了。


        总结,新华龙单片机不像STC单片机那样,可以一开始当成8051那样用的。总得拿单片机数据手册反复看的。它跟一般的8051单片机区别还是挺大的!所以我为了让将一个发光二极管闪亮,花了一天的时间。

PARTNER CONTENT

文章评论5条评论)

登录后参与讨论

用户120037 2009-8-6 12:51

你的程序编译没有错误不代表程序就是对的呀?当然也可能是硬件等其他的问题,前几天我拿C8051F005和液晶12832相连,试了半天液晶都没显示,后来我一看,液晶上有个控制串并联的电阻没有改.

用户205653 2009-8-5 10:09

我刚开始调试C8051F040与液晶HS12864—15的连接,可是怎么也调不通,用C编的程序,在Keil3里运行的没有错误,040的引脚也编译了,可液晶就是不显示字符,请教一下,这是为什么呢?

用户1393282 2009-8-4 09:35

这个片子,还可以,内涵资源相对丰富,在51系列中算是中高档了,但是价格太贵,同等资源竟然比Freescale和Microchip还贵,即使同等价格它都很难推广,所以,本科毕业以后,就再也没用过它了

tengjingshu_112148725 2009-7-30 17:01

也可以看我blog上的文章

tengjingshu_112148725 2009-7-30 17:00

确实差别很大,不过如果熟了之后,你又会发现其实C8051F同传统51差不多。这很辨证吧。 记得C8051F的看门狗默认是打开的,所以要记得关闭或按时喂狗。上电复位电路与51是不一样的,低电平复位。可以看看文章:C8051F单片机使用经验总结
相关推荐阅读
用户120037 2010-05-10 21:15
差点冤枉了TI
我在看TI一个芯片的资料手册,看不懂,就到它官网上找应用笔记,结果没找到,很是郁闷。可是过了一会,发现自己却是在ADI的网站找TI的资料呢,晕~~...
用户120037 2010-04-19 20:05
JFET的电容参数
在教材上看到JFET的交流参数有Cgs,Cgd,Cds.但是在JFET具体型号的datasheet上看到的参数有输入电容Ciss和反向传输电容Crss两个参数。我不明白它们之间是什么关系,就去论坛上问...
用户120037 2009-09-04 11:15
MOV R7,A
今天看了下单片机汇编语言各指令分别对应的机器码.看到机器码FF对应的是MOV R7,A。我忽然明白了一些东西,以前调试程序的时候总是莫名其妙的出来一个汇编程序框,里面全是MOV R7,A这条指令,一直...
用户120037 2009-07-15 11:22
自己写串口调试助手遇到的问题
        最近想用VB写一个串口调试助手,先写一个跟网上的串口调试助手界面一样的软件,再根据自己工作的需要写一个适合我工作时用的串口调试软件.        现在已经花了一个多月的时间在业余时间...
EE直播间
更多
我要评论
5
9
关闭 站长推荐上一条 /3 下一条