打印

求助PIC小程序能仿真写片后不能运行

[复制链接]
4253|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
2d732|  楼主 | 2008-1-15 09:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    初次游荡PIC就触礁。敬请老水手指点指点。
暂时还没有PIC调试设备和用户板,用了手边一片16F84a接上LED和输入按钮就准备上上手。简短程序在MPLAB IDE上软仿真正常,但写入后片子就是不能运行。
    供电电压、复位脚电压、晶振脚的波形都正常。
我用的是superpro/z写入器,由于里面列表中仅有含16F84,我是用它代替16F84a。选用的是Intel格式。写入后再读回与源程序反汇编代码无异常。另外我试将Config的各项都更改过,仍不能运行。
在superpro/z写入器选择16F84片子后有配置字选项,其中有ID0~ID3输入框,默认均为3FFF,我不知道其意义。请问应该如何填写?另外,看门狗、上电定时器、晶振方式、代码保护的选项应该与程序中config一致吗?
    敬请前辈给与帮助

    以下是那段代码
    list      p=16F84A
    #include <p16F84A.inc>
    __CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_OFF & _XT_OSC

INT_VAR       UDATA     0x0C   
COUNT    RES 1
DVAR    RES 1
DVAR1    RES 1
DVAR2    RES 1

RESET_VECTOR  CODE    0x000 
          goto    start

MAIN    CODE
start
    CLRF    PORTB    
    MOVLW    0xF0
    bsf    STATUS,5    ;RP0置1,选中Bank1;以便设置寄存器TRISB
    MOVWF    TRISB    ;RB口D3~D0为输入;
    BCF        STATUS,5
    movwf  PORTB     ;无效clear PORTC
    clrf   COUNT     ;clr count
IncCount
    incf   COUNT,F   ;increment count
    movf   COUNT,W
    movwf  PORTB     ;display on port c
    call    Delay    
    goto   IncCount  ;loop
Delay
    movlw    0xFF; set outer delay loop
    movwf    DVAR2
Delay0
    movlw    0xFF; set outer delay loop
    movwf    DVAR1
Delay1
    movlw    0x08
    movwf    DVAR; set inner delay loop
Delay2
    decfsz    DVAR
    goto    Delay2
    decfsz    DVAR1
    goto    Delay1
    decfsz    DVAR2
    goto    Delay0
    return
    END     
沙发
lifengtao| | 2008-1-15 10:38 | 只看该作者

hehe

貌似带A和不带A区别还是比较大的,最好找个专用烧写器。烧写时,晶振选HS。
    MOVLW    0xF0
    bsf    STATUS,5    ;RP0置1,选中Bank1;以便设置寄存器TRISB
    MOVWF    TRISB    ;RB口D3~D0为输入;
    BCF        STATUS,5
错了 这样RB口D3~D0为输出D4~D7为输入 你把控制字写反了
IncCount
    incf   COUNT,F   ;increment count
    movf   COUNT,W
    movwf  PORTB     ;display on port c
    call    Delay    
    goto   IncCount  ;loop
死循环,还不喂狗
你写的汇编真不怎么地~~大小写混用,格式混乱。谁教你的。

使用特权

评论回复
板凳
2d732|  楼主 | 2008-1-16 16:04 | 只看该作者

恢复lifengtao先生

    谢谢lifengtao先生的指点。2MHz晶振选XT是一些资料上看到的,但我还是采纳你建议用HS试试,还是不行。看来目前我没有专用设备是难以起步的。我现在想改用有ICSP(TM) 协议的片子入门,因我购了一支ICD2。原想买块Demo 2 plus演示板以节省时间。可问贝能科技要392个大洋,只好准备买只18F452片子搭个实验板。
    谢谢你指出我在程序中大小写混用的错误,其实是我随手考来的。初始化B口用了0xF0,原意是将B口低4位输出、高4位输出,结果还没有看到循环灯就卡壳了。
    在设置中在暂时关闭了狗,所以没在程序中喂狗。
    谢谢lifengtao先生的指教,您还能告诉我config中的CP含义吗?写片是填ID的意义何在?要如何填写?也在此求教热心人,小生有礼了。

使用特权

评论回复
地板
lifengtao| | 2008-1-17 10:12 | 只看该作者

呵呵~

你的实验板CUP搭有晶振(如 4M,12M,16M,20M),你烧写芯片就选择HS(高速),它是一种芯片震荡器选择方式.其它的还有RC(阻容),就是OSC1管脚接电阻电容.你说的XT(标准),和HS的芯片外部接法一样,不过我一般都是用HS.晶振不要选2MHz,选4MHz或它的倍数.
ICSP(TM) 协议的片子16F7X或16F8XX都是有的啊,你没必要买18F的片子啊,它的指令是16位的.
狗的问题就不说了,呵呵.
config中的CP1,CP0是程序代码保护方案,你这么关心这个干吗?怕你的程序被人读走啊?!ID是用户识别码,这个对你更没有意义.
动手是很重要,但你要先有一本PIC的书.
不要说我是先生,我还是很年轻的.

使用特权

评论回复
5
2d732|  楼主 | 2008-1-17 16:44 | 只看该作者

To lifengtao

To lifengtao
    谢谢你的回复。我才知道16F7X或16F8XX也有ICSP(TM) 协议。
    书是要买的,不过我大都是先动手,以后才知道该买什么样的书。
    从51转过来,PIC啥都别扭,啥都新鲜,慢慢来吧。
    年轻就不能称先生吗?我常从年轻人那里学新知。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

34

帖子

1

粉丝