学PIC的第一个程序

[复制链接]
 楼主| 发表于 2008-4-7 15:19 | 显示全部楼层 |阅读模式
pic, ov, go, AI, AC
各位老师,刚学PIC,自己编了第一个程序,就出现了问题,请帮忙,谢谢/。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list&nbsp;p=16f877A<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#include&nbsp;&ltp16F877A.inc&gt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cblock&nbsp;0x20<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endc<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org&nbsp;00<br />&nbsp;&nbsp;&nbsp;&nbsp;nop<br />&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;main<br />&nbsp;&nbsp;&nbsp;&nbsp;org&nbsp;10<br />main:<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;banksel&nbsp;trisa<br />&nbsp;&nbsp;&nbsp;&nbsp;bcf&nbsp;trisa,1&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movlw&nbsp;b'11111111'<br />&nbsp;&nbsp;&nbsp;&nbsp;banksel&nbsp;porta<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movwf&nbsp;porta<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;delay<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movlw&nbsp;0x00<br />&nbsp;&nbsp;&nbsp;&nbsp;movwf&nbsp;porta<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;delay<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;main<br />delay:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movlw&nbsp;0x4<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movwf&nbsp;count1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movwf&nbsp;count2<br /><br />loop:&nbsp;&nbsp;&nbsp;decfsz&nbsp;count2,f<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GOTO&nbsp;loop<br />loop1:&nbsp;&nbsp;decfsz&nbsp;count1,f<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />goto&nbsp;loop1<br />&nbsp;&nbsp;&nbsp;&nbsp;return<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />我把PORTA的第2个PIN&nbsp;&nbsp;RA1高为输出,可再对PORTA整体写入11111111,可PORTA为0,不是00000001,,,奇怪了。。谢谢
 楼主| 发表于 2008-4-7 16:06 | 显示全部楼层

RE

&nbsp;&nbsp;&nbsp;&nbsp;list&nbsp;p=16f877A<br />&nbsp;&nbsp;&nbsp;&nbsp;#include&nbsp;&ltp16F877A.inc&gt<br />&nbsp;&nbsp;&nbsp;&nbsp;cblock&nbsp;0x20<br />&nbsp;&nbsp;&nbsp;&nbsp;count1<br />&nbsp;&nbsp;&nbsp;&nbsp;count2<br />&nbsp;&nbsp;&nbsp;&nbsp;endc<br />&nbsp;&nbsp;&nbsp;&nbsp;org&nbsp;00<br />&nbsp;&nbsp;&nbsp;&nbsp;nop<br />&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;main<br />&nbsp;&nbsp;&nbsp;&nbsp;org&nbsp;10<br />main:<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;banksel&nbsp;ADCON1<br />&nbsp;&nbsp;&nbsp;&nbsp;movlw&nbsp;0Xff;把模拟口设为数字口<br />&nbsp;&nbsp;&nbsp;&nbsp;movwf&nbsp;ADCON1<br />&nbsp;&nbsp;&nbsp;&nbsp;BCF&nbsp;TRISA,1<br />&nbsp;&nbsp;&nbsp;&nbsp;movlw&nbsp;0xff<br />&nbsp;&nbsp;&nbsp;&nbsp;banksel&nbsp;PORTA<br />&nbsp;&nbsp;&nbsp;&nbsp;movwf&nbsp;PORTA<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;delay<br />&nbsp;&nbsp;&nbsp;&nbsp;movlw&nbsp;0x00<br />&nbsp;&nbsp;&nbsp;&nbsp;movwf&nbsp;PORTA<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;delay<br />&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;main<br />delay:<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;end<br /><br />各位老师,上个问题我发现了,可现在又有问题:就是在单步运行时,当程序运行到&nbsp;BCF&nbsp;TRISA,1&nbsp;&nbsp;时,TRISA&nbsp;与PORTA同时变,POTRA成00000010,为什么呢?PORTA应该是在movwf&nbsp;PORTA&nbsp;这条程序时才变啊?<br />另外,TRISA的最高两位为什么一直是零,不会变化,显示:00111101<br /><br />谢谢。
发表于 2008-4-7 20:04 | 显示全部楼层

Read and Write!

端口的采样是随时都在进行的,当你原来的&nbsp;PORTA,1&nbsp;位输入的时候,你的端口寄存器总是同步于物理端口的电平,当你&nbsp;BCF&nbsp;TRISA,1&nbsp;时,这个值就立刻映射回端口了
发表于 2008-4-7 22:19 | 显示全部楼层

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

呵呵
 楼主| 发表于 2008-4-8 08:14 | 显示全部楼层

re

谢谢两位老师!<br />SupermanTM老师,&nbsp;&nbsp;你的端口寄存器总是同步于物理端口的电平&nbsp;&nbsp;什么意思啊?能说的简单点嘛,哈.<br />lifengtao老师,你说的体选是什么意思啊?<br />谢谢.
发表于 2008-4-8 16:01 | 显示全部楼层

PIC的IO口有方向性!

这一点必须注意!~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

102

帖子

0

粉丝
快速回复 返回顶部 返回列表