怪事年年有啊~

[复制链接]
3716|17
 楼主| zhizuzhe 发表于 2007-11-4 22:31 | 显示全部楼层 |阅读模式
ov, TE, pi, gp, IO
刚学PIC单片机,用的PIC10F202,写了段程序实现方波输出:<br />&nbsp;&nbsp;&nbsp;&nbsp;list&nbsp;P=10F202<br />&nbsp;&nbsp;&nbsp;&nbsp;#INCLUDE&nbsp;&ltP10F202.INC&gt<br />&nbsp;&nbsp;&nbsp;&nbsp;__CONFIG&nbsp;_MCLRE_OFF&nbsp;&_CP_OFF&nbsp;&_WDT_OFF<br />TEMP&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0x10<br />TEMP1&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0x11<br />TEMP2&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0x12<br />TEMP3&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0x13<br />&nbsp;&nbsp;&nbsp;&nbsp;ORG&nbsp;&nbsp;&nbsp;&nbsp;0x00;<br />INIT<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;OPTION&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;BCF&nbsp;&nbsp;&nbsp;&nbsp;OSCCAL,0;<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;0x0E;<br />&nbsp;&nbsp;&nbsp;&nbsp;TRIS&nbsp;&nbsp;&nbsp;&nbsp;GPIO;<br />EE<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;&nbsp;GPIO;<br />&nbsp;&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;DELAY10MS;<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;0x03;<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;&nbsp;GPIO;<br />&nbsp;&nbsp;&nbsp;&nbsp;CALL&nbsp;&nbsp;&nbsp;&nbsp;DELAY10MS;<br />&nbsp;&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;&nbsp;EE;<br /><br />DELAY10MS<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;0x0E;改这里!!!改成0xFF<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;&nbsp;TEMP;<br />D2<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;0xED;<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVWF&nbsp;&nbsp;&nbsp;&nbsp;TEMP1;<br />D1<br />&nbsp;&nbsp;&nbsp;&nbsp;DECFSZ&nbsp;&nbsp;&nbsp;&nbsp;TEMP1,1;<br />&nbsp;&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;&nbsp;D1;<br />&nbsp;&nbsp;&nbsp;&nbsp;DECFSZ&nbsp;&nbsp;&nbsp;&nbsp;TEMP,1;<br />&nbsp;&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;&nbsp;&nbsp;D2;<br />&nbsp;&nbsp;&nbsp;&nbsp;RETLW&nbsp;&nbsp;&nbsp;&nbsp;0;<br />输出的波形是高电平5ms,低电平10ms,怪事1。。。<br />当我将DELAY10MS中的第一句MOVLW&nbsp;0x0E改成MOVLW&nbsp;0x96;本打算延时100ms的,可是用示波器量GP0口,只有一个微妙级的正脉冲。。。怪事2.<br />请问这是为什么啊?<br />
 楼主| zhizuzhe 发表于 2007-11-4 22:58 | 显示全部楼层

等待高手帮忙解答一下

我用SIM仿真的时候,程序运行时间是对的。。。
 楼主| zhizuzhe 发表于 2007-11-5 09:58 | 显示全部楼层

等待,兰天白云这些高手呢。。。

真的想不通啊,用户手册也仔细查过了。。。
 楼主| zhizuzhe 发表于 2007-11-5 10:47 | 显示全部楼层

我将0x0E逐渐加大,

比如加大到0x10,发现方波的周期还是15ms左右,但是占空比变小了,高电平的时间变短了
lxrlxr 发表于 2007-11-5 11:16 | 显示全部楼层

程序没错,你测的IO口是不是对

  
 楼主| zhizuzhe 发表于 2007-11-5 12:35 | 显示全部楼层

我测的GP0口

  
兰天白云 发表于 2007-11-5 13:36 | 显示全部楼层

你再试试

INIT<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;OPTION&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;BCF&nbsp;&nbsp;&nbsp;&nbsp;OSCCAL,0;<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;0x0E;<br />&nbsp;&nbsp;&nbsp;&nbsp;TRIS&nbsp;&nbsp;&nbsp;&nbsp;GPIO;<br /><br /><br />INIT<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;OPTION&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;BCF&nbsp;&nbsp;&nbsp;&nbsp;OSCCAL,0;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVLW&nbsp;&nbsp;&nbsp;&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;改<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISGPIO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;改<br />
 楼主| zhizuzhe 发表于 2007-11-5 14:33 | 显示全部楼层

TRISGPIO没这指令啊

我改成TRISGPIO,这条指令在HEX中不存在的~
 楼主| zhizuzhe 发表于 2007-11-5 14:37 | 显示全部楼层

我现在是用51单片机做PIC单片机的编程器

因为PIC10F202的编程器时序比较简单,程序的下载已经没有问题了,<br />因为我写进去的再读出来并通过LED显示,是对的。<br /><br />TRISGPIO这条指令应该没有,因为变成了标号一样的颜色,<br />HEX文件中这条指令也没有相应的操作码。
 楼主| zhizuzhe 发表于 2007-11-5 15:25 | 显示全部楼层

按照兰天白云的意思

我改成:<br />MOVLW&nbsp;0x00;<br />TRIS&nbsp;GPIO;<br /><br />然后在GP0和GP1口测量波形,输出波形相同。<br />现象还是一样。。。
 楼主| zhizuzhe 发表于 2007-11-5 15:39 | 显示全部楼层

我再改

我将DELAY10MS下的第一句话改成<br />MOVLW&nbsp;0x07;<br />也就是延时子程序大概延时5ms,<br />用示波器测量GP0和GP1口,<br />出来的波形是:低电平(5ms),高电平(5ms),低电平(5ms),高电平(1ms),低电平(5ms),高电平(5ms),低电平(5ms),高电平(1ms)……
兰天白云 发表于 2007-11-5 16:23 | 显示全部楼层

关掉比较器试试

  
 楼主| zhizuzhe 发表于 2007-11-5 16:37 | 显示全部楼层

PIC10F202没有比较器的啊~

  
 楼主| zhizuzhe 发表于 2007-11-5 20:21 | 显示全部楼层

把DELAY10MS下的第一句话改了几个参数

就感觉PIC每10几个ms固定有一次低电平输出一样。<br />但是我将配置字写成了关掉WDT和定时器啊~
xieyuanbin 发表于 2007-11-6 08:17 | 显示全部楼层

贴出的程序没错。

估计是你配置字没写正确导致WDT溢出所致。因10-15ms刚好是WDT的默认溢出时间。<br />
xieyuanbin 发表于 2007-11-6 08:17 | 显示全部楼层

你可在延时程序中加入CLRWDT指令看看

  
 楼主| zhizuzhe 发表于 2007-11-6 11:08 | 显示全部楼层

xieyuanbin大侠答到点了,厉害,呵呵

我昨天晚上也是这么想的,<br />然后试了试改变WDT的分频比,<br />果然,复位的时间随着改变。<br />但是迷惑的是,我将配置字(0x3ff单元)写为全0还是没有禁掉WDT啊,<br />按照datasheet上说的,将WDTE位清零WDT就应该被禁掉才对啊~<br />
xieyuanbin 发表于 2007-11-6 15:09 | 显示全部楼层

你根本没有写入配置字,

所以改什么都没用。看看有没有别的烧写器,用别的烧写器试试。或者做一个JDM.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

48

主题

215

帖子

1

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