打印

学PIC的第一个程序

[复制链接]
1789|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xuyan8401|  楼主 | 2008-4-7 15:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
pic, ov, go, AI, AC
各位老师,刚学PIC,自己编了第一个程序,就出现了问题,请帮忙,谢谢/。
         
          list p=16f877A
         #include <p16F877A.inc>
         cblock 0x20
         count1
         count2
         endc
         org 00
    nop
    goto main
    org 10
main:
   
    banksel trisa
    bcf trisa,1  
         movlw b'11111111'
    banksel porta
         movwf porta
    call delay
         movlw 0x00
    movwf porta
    call delay
         goto main
delay:
         movlw 0x4
         movwf count1
         movwf count2

loop:   decfsz count2,f
    
        GOTO loop
loop1:  decfsz count1,f
         
goto loop1
    return
         end
    
     
我把PORTA的第2个PIN  RA1高为输出,可再对PORTA整体写入11111111,可PORTA为0,不是00000001,,,奇怪了。。谢谢
沙发
xuyan8401|  楼主 | 2008-4-7 16:06 | 只看该作者

RE

    list p=16f877A
    #include <p16F877A.inc>
    cblock 0x20
    count1
    count2
    endc
    org 00
    nop
    goto main
    org 10
main:
    
    banksel ADCON1
    movlw 0Xff;把模拟口设为数字口
    movwf ADCON1
    BCF TRISA,1
    movlw 0xff
    banksel PORTA
    movwf PORTA
    call delay
    movlw 0x00
    movwf PORTA
    call delay
    goto main
delay:
    
    end

各位老师,上个问题我发现了,可现在又有问题:就是在单步运行时,当程序运行到 BCF TRISA,1  时,TRISA 与PORTA同时变,POTRA成00000010,为什么呢?PORTA应该是在movwf PORTA 这条程序时才变啊?
另外,TRISA的最高两位为什么一直是零,不会变化,显示:00111101

谢谢。

使用特权

评论回复
板凳
SupermanTm| | 2008-4-7 20:04 | 只看该作者

Read and Write!

端口的采样是随时都在进行的,当你原来的 PORTA,1 位输入的时候,你的端口寄存器总是同步于物理端口的电平,当你 BCF TRISA,1 时,这个值就立刻映射回端口了

使用特权

评论回复
地板
lifengtao| | 2008-4-7 22:19 | 只看该作者

先把TRISA方向置好,再处理PORTA,注意体选处理

呵呵

使用特权

评论回复
5
xuyan8401|  楼主 | 2008-4-8 08:14 | 只看该作者

re

谢谢两位老师!
SupermanTM老师,  你的端口寄存器总是同步于物理端口的电平  什么意思啊?能说的简单点嘛,哈.
lifengtao老师,你说的体选是什么意思啊?
谢谢.

使用特权

评论回复
6
l0p0c| | 2008-4-8 16:01 | 只看该作者

PIC的IO口有方向性!

这一点必须注意!~

使用特权

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

本版积分规则

24

主题

102

帖子

0

粉丝