12c509输出的问题

[复制链接]
3935|6
 楼主| wyezheng 发表于 2007-3-18 10:20 | 显示全部楼层 |阅读模式
用到GP0、GP1、GP2三个引脚,全部设置为输出,每秒用数据传送指令同时给它们写一次数据,GP0写入1,GP1写入0,GP2间隔1秒写入0和1,用软件仿真没有问题,但烧写后在板子上运行时,GP0输出的是0,GP1输出的是1,只有GP2输出是对的。我原来用的是51系列的单片机,刚接触PIC的,实在弄不清为什么会出现这种现象,请高手指点。
fzj 发表于 2007-3-19 13:46 | 显示全部楼层

不知道你是否应用了位操作指令?

如果使用位操作指令那就需要注意硬件电路了,如果你的硬件电路设计不合格,那就会出现你现象不到的结果.
 楼主| wyezheng 发表于 2007-3-20 07:18 | 显示全部楼层

试过了

一开始用了位操作指令,怀疑可能是这方面的问题,后来该为movwf指令,还是不行。
FZJ 发表于 2007-3-20 08:29 | 显示全部楼层

楼主方便把原理图和程序发上来吗?

以便查找原因?
xln158 发表于 2007-3-20 15:30 | 显示全部楼层

请大家看看我编的这个程序怎么执行不下去!

请大家看看我编的这个程序怎么执行不下去!PC指针到了0XB的时候就跳到了0,试了很多次都不行。本来做的是个在GP0口上一小灯的闪烁程序,可是不能跳转,改了以下。有人说是头文件不对!可是我觉得应该没有问题的!还望赐教!谢谢!我用的是PIC12F509,开发环境是MPLAB&nbsp;IDE&nbsp;V7.10<br /><br />以下是我的程序:<br /><br />#DEFINE&nbsp;DELAY&nbsp;0X11<br />#DEFINE&nbsp;OFF&nbsp;0X02<br />indf&nbsp;equ&nbsp;0<br />TMRO&nbsp;equ&nbsp;1<br />PC&nbsp;equ&nbsp;2<br />STATUS&nbsp;equ&nbsp;3<br />FSR&nbsp;equ&nbsp;4<br />GP&nbsp;equ&nbsp;6<br />DATA1&nbsp;equ&nbsp;7<br />DATA2&nbsp;equ&nbsp;8<br />DATA3&nbsp;EQU&nbsp;9<br />&nbsp;ORG&nbsp;0X00&nbsp;&nbsp;<br />&nbsp;GOTO&nbsp;MAIN<br />OFF:<br />&nbsp;BCF&nbsp;GP,0<br />&nbsp;RETLW&nbsp;0<br />MAIN:<br />&nbsp;&nbsp;&nbsp;&nbsp;BCF&nbsp;STATUS,5<br />&nbsp;BCF&nbsp;FSR,5<br />&nbsp;MOVLW&nbsp;0X0E<br />&nbsp;TRIS&nbsp;GP<br />&nbsp;MOVLW&nbsp;7<br />&nbsp;OPTION<br />&nbsp;MOVLW&nbsp;0XFE<br />&nbsp;ANDWF&nbsp;GP,1<br />&nbsp;CLRWDT&nbsp;<br />&nbsp;BSF&nbsp;GP,0<br />&nbsp;GOTO&nbsp;DELAY<br />&nbsp;&nbsp;&nbsp;&nbsp;BCF&nbsp;GP,0<br />&nbsp;BTFSC&nbsp;GP,2<br />&nbsp;GOTO&nbsp;OFF<br />&nbsp;MOVLW&nbsp;10<br />&nbsp;MOVWF&nbsp;DATA3<br />&nbsp;DECFSZ&nbsp;DATA3&nbsp;<br />&nbsp;GOTO&nbsp;OFF<br />&nbsp;END<br /><br />
FZJ 发表于 2007-3-23 16:09 | 显示全部楼层

RE

&nbsp;xln158&nbsp;发表于&nbsp;2007-3-20&nbsp;15:30&nbsp;PIC&nbsp;单片机&nbsp;←返回版面&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />5楼:&nbsp;请大家看看我编的这个程序怎么执行不下去!&nbsp;<br /><br />请大家看看我编的这个程序怎么执行不下去!PC指针到了0XB的时候就跳到了0,试了很多次都不行。本来做的是个在GP0口上一小灯的闪烁程序,可是不能跳转,改了以下。有人说是头文件不对!可是我觉得应该没有问题的!还望赐教!谢谢!我用的是PIC12F509,开发环境是MPLAB&nbsp;IDE&nbsp;V7.10<br /><br />以下是我的程序:<br /><br />#DEFINE&nbsp;DELAY&nbsp;0X11<br />#DEFINE&nbsp;OFF&nbsp;0X02<br />indf&nbsp;equ&nbsp;0<br />TMRO&nbsp;equ&nbsp;1<br />PC&nbsp;equ&nbsp;2<br />STATUS&nbsp;equ&nbsp;3<br />FSR&nbsp;equ&nbsp;4<br />GP&nbsp;equ&nbsp;6<br />DATA1&nbsp;equ&nbsp;7<br />DATA2&nbsp;equ&nbsp;8<br />DATA3&nbsp;EQU&nbsp;9<br />ORG&nbsp;0X00&nbsp;&nbsp;<br />GOTO&nbsp;MAIN<br />OFF:<br />BCF&nbsp;GP,0<br />RETLW&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//你下面用GOTO&nbsp;OFF,那这句话该返回到哪里?<br />MAIN:<br />&nbsp;&nbsp;&nbsp;&nbsp;BCF&nbsp;STATUS,5<br />BCF&nbsp;FSR,5<br />MOVLW&nbsp;0X0E<br />TRIS&nbsp;GP<br />MOVLW&nbsp;7<br />OPTION<br />MOVLW&nbsp;0XFE<br />ANDWF&nbsp;GP,1<br />CLRWDT&nbsp;<br />BSF&nbsp;GP,0<br />GOTO&nbsp;DELAY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;//这个GOTO后去哪里了?DELAY这个子程序在哪里?<br />&nbsp;&nbsp;&nbsp;&nbsp;BCF&nbsp;GP,0<br />BTFSC&nbsp;GP,2<br />GOTO&nbsp;OFF<br />MOVLW&nbsp;10<br />MOVWF&nbsp;DATA3<br />DECFSZ&nbsp;DATA3&nbsp;<br />GOTO&nbsp;OFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//CALL&nbsp;OFF&nbsp;&nbsp;&nbsp;GOTO&nbsp;&nbsp;MAIN<br />END&nbsp;<br />&nbsp;<br />
 楼主| wyezheng 发表于 2007-3-25 08:15 | 显示全部楼层

RE:4楼和5楼

re:4楼<br />以下是我的程序,硬件也很简单,使用内部复位、内部RC振荡。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LIST&nbsp;&nbsp;P=12C509<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#include&nbsp;&ltp12c509.inc&gt<br /><br />msec&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;equ&nbsp;10h<br />sec&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;equ&nbsp;11h<br />min&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;equ&nbsp;12h<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org&nbsp;&nbsp;&nbsp;00h<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />start1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btfss&nbsp;&nbsp;STATUS,NOT_PD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;检测是否上电复位<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;&nbsp;&nbsp;loop<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btfss&nbsp;&nbsp;STATUS,NOT_TO<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;&nbsp;&nbsp;loop<br />int<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movlw&nbsp;&nbsp;0x07&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;上电复位,清07H~1FHRAM<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movwf&nbsp;&nbsp;FSR<br />int0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clrf&nbsp;&nbsp;&nbsp;INDF<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;incf&nbsp;&nbsp;&nbsp;FSR,1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movlw&nbsp;&nbsp;0x1f<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subwf&nbsp;&nbsp;FSR,0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btfss&nbsp;&nbsp;STATUS,C<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;&nbsp;&nbsp;int0&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />loop<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movlw&nbsp;&nbsp;0x03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;设置option<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;option<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clrf&nbsp;&nbsp;&nbsp;TMR0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;开始计时<br />loop0&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movlw&nbsp;&nbsp;0xf9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;250<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subwf&nbsp;&nbsp;TMR0,0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btfss&nbsp;&nbsp;STATUS,C<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;&nbsp;&nbsp;loop0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;不到4ms,等待<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movlw&nbsp;&nbsp;0x03<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nop<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nop<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nop<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nop<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nop<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nop<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;option<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clrf&nbsp;&nbsp;&nbsp;TMR0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clrwdt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;incf&nbsp;&nbsp;&nbsp;msec,1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movlw&nbsp;&nbsp;0xfa<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subwf&nbsp;&nbsp;msec,0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btfss&nbsp;&nbsp;STATUS,C<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;&nbsp;&nbsp;loop0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;不到1S(250个4ms)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clrf&nbsp;&nbsp;&nbsp;msec<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;incf&nbsp;&nbsp;&nbsp;sec,1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;到1S,sec加1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movlw&nbsp;&nbsp;0x3c<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subwf&nbsp;&nbsp;sec,0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btfss&nbsp;&nbsp;STATUS,C<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;&nbsp;&nbsp;pdout<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clrf&nbsp;&nbsp;&nbsp;sec<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;incf&nbsp;&nbsp;&nbsp;min,1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;够60S,min加1<br />pdout<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movlw&nbsp;&nbsp;0x0f<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subwf&nbsp;&nbsp;min,0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btfss&nbsp;&nbsp;STATUS,C<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;&nbsp;&nbsp;no_15min&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;不到15min<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movlw&nbsp;&nbsp;0x0f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;到15min,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movwf&nbsp;&nbsp;min<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clrw&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tris&nbsp;&nbsp;&nbsp;6<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bsf&nbsp;&nbsp;&nbsp;&nbsp;GPIO,1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bcf&nbsp;&nbsp;&nbsp;&nbsp;GPIO,2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btfss&nbsp;&nbsp;GPIO,0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;&nbsp;&nbsp;zhi1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bcf&nbsp;&nbsp;&nbsp;&nbsp;GPIO,0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;&nbsp;&nbsp;to_loop0<br />zhi1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bsf&nbsp;&nbsp;&nbsp;&nbsp;GPIO,0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;&nbsp;&nbsp;to_loop0<br /><br />no_15min<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clrw&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tris&nbsp;&nbsp;&nbsp;6<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bcf&nbsp;&nbsp;&nbsp;&nbsp;GPIO,1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bsf&nbsp;&nbsp;&nbsp;&nbsp;GPIO,2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btfss&nbsp;&nbsp;GPIO,0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;&nbsp;&nbsp;zhi1_1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bcf&nbsp;&nbsp;&nbsp;&nbsp;GPIO,0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;&nbsp;&nbsp;to_loop0&nbsp;&nbsp;&nbsp;&nbsp;<br />zhi1_1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bsf&nbsp;&nbsp;&nbsp;&nbsp;GPIO,0&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />to_loop0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;&nbsp;&nbsp;loop0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br /><br />re5楼:<br /><br />你说的现象我也遇到过,就是用软件仿真上面的程序时,在goto&nbsp;loop0处总是转到start1,后来把movlw&nbsp;&nbsp;0x03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;option改为movlw&nbsp;&nbsp;0x83&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;option就没问题了,我也不知道为什么会这样.<br /><br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

20

帖子

0

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