打印

关于PIC简单汇编程序问题

[复制链接]
666|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
754478145|  楼主 | 2015-3-20 23:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自己写的一段简单的流水灯程序,软件调试可以看到PORTC端口流动变化,但是下载到板子上8个灯都不亮,求解,谢谢
           TITLE"FLOW LED"     ; 流水灯
;****************************************************************
;左右流动流水灯控制,先左移,再右移,循环往复
;****************************************************************
; PIC16F690 Configuration Bit Settings

; ASM source line config statements

#include "p16F690.inc"         ;头文件

; CONFIG
; __config 0xFFE1
__CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_ON & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_SBODEN & _IESO_ON & _FCMEN_ON
;配置字
;********************片内RAM常用资源、变量定义及相应说明****************************

FLAG             EQU  20H      ;定义一个方向控制标志位
D1               EQU  21H
D2               EQU  22H       ;定义延时程序内外循环数据存储区
            ORG 0000H
            GOTO START
START       BCF STATUS,RP0              ;  主程序
            BCF STATUS,RP1              ;RP0:RP1=00准备寻址Bank0
            BCF STATUS,IRP              ;准备间接寻址
            MOVLW TRISC                 ;获取C端口地址
            MOVWF FSR                   ;现在FSR指向TRISC
            MOVLW 0x00
            MOVWF INDF
            NOP                         ;延时片刻,等待信号稳定建立
            MOVLW 0x01
            MOVWF PORTC
            BCF STATUS,C                ;清除进位标志位,准备移位
            BCF FLAG,0                  ;FLAG的零位为左右移位标志位
LOOP        BTFSS STATUS,C              ;测试标志位,为一则跳,为零则进行左移
            GOTO LOOP1                  ;左移
            COMF FLAG,F                 ;取反标志位,右移
LOOP1       BTFSC FLAG,0
            GOTO LOOP2
            RLF PORTC,W
            MOVWF PORTC
            GOTO LOOP3
LOOP2       RRF PORTC,W
            MOVWF PORTC
LOOP3       CALL DELAY
            GOTO LOOP
DELAY       MOVLW 0x8f
            MOVWF D1
LP0         MOVLW 0xef
            MOVWF D2
LP1         DECFSZ D2,F
            GOTO LP1
LP2         DECFSZ D1,F
            GOTO LP0
            RETURN
            END
沙发
NE5532| | 2015-3-21 19:26 | 只看该作者
别一来就整这么复杂,先写个3行的程序,啥延时都别加,就端口输出0和1,弄对了再加其他程序上去。楼主不会写程序,请参考侃单片机版面精华《程序调试黑宝书》

使用特权

评论回复
板凳
JY-DX-JY| | 2015-3-21 19:45 | 只看该作者
看别人写的汇编太头疼了。

使用特权

评论回复
地板
yklstudent| | 2015-3-22 17:40 | 只看该作者
;****************************************************************
;左右流动流水灯控制,先左移,再右移,循环往复
;****************************************************************
; PIC16F690 Configuration Bit Settings

; ASM source line config statements

#include "p16F690.inc"         ;头文件

; CONFIG
; __config 0xFFE1
__CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_ON & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_SBODEN & _IESO_ON & _FCMEN_ON
;配置字
;********************片内RAM常用资源、变量定义及相应说明****************************

FLAG               EQU  20H      ;定义一个方向控制标志位
D1                   EQU  21H
D2                 EQU  22H       ;定义延时程序内外循环数据存储区

            ORG 0000H
            GOTO START
START       BCF STATUS,RP0              ;  主程序
            BCF STATUS,RP1              ;RP0:RP1=00准备寻址Bank0
            BCF STATUS,IRP              ;准备间接寻址
            MOVLW TRISC                 ;获取C端口地址
            MOVWF FSR                   ;现在FSR指向TRISC
            MOVLW 0x00
            MOVWF INDF
            NOP                         ;延时片刻,等待信号稳定建立
                        CLRW
                        BCF  STATUS,RP0
                        BSF  STATUS,RP1
                        MOVWF  ANSEL
                        MOVWF  ANSELH
            MOVLW 0x01
            MOVWF PORTC
            BCF STATUS,C                ;清除进位标志位,准备移位
            BCF FLAG,0                  ;FLAG的零位为左右移位标志位
LOOP        BTFSS STATUS,C              ;测试标志位,为一则跳,为零则进行左移
            GOTO LOOP1                  ;左移
            COMF FLAG,F                 ;取反标志位,右移
LOOP1       BTFSC FLAG,0
            GOTO LOOP2
                  RLF PORTC,W
            MOVWF PORTC
            GOTO LOOP3
LOOP2       RRF PORTC,W
            MOVWF PORTC
LOOP3       CALL DELAY
            GOTO LOOP
DELAY       MOVLW 0x8f
            MOVWF D1
LP0         MOVLW 0xef
            MOVWF D2
LP1         DECFSZ D2,F
            GOTO LP1
LP2         DECFSZ D1,F
            GOTO LP0
            RETURN
            END
注意PORTC口要设置为数字模式,默认为模拟模式

使用特权

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

本版积分规则

1

主题

1

帖子

0

粉丝