允一斯诺 2019-04-28 22:04
浏览 434
已结题

单片机PIC16F877A 产生200Hz的方波

在做设计,但是做了好久完全是一脸懵逼。
啥啥都不会,居然还想自己做一做试试。我真的太天真了。

第一步就卡住了,卡了一个星期了。真的,救救孩子吧T-T
TASK1:单片机PIC16F877A,提供稳定并且可调的200Hz的方波信号;

网上能找到的都是51的单片机的,根据找到的例子暂时写了一个汇编语言的。但是编译不成功,运行环境是MPLAB。MPLAB也刚开始用,反正编译是不成功。反正是实在是挣扎不出来了,来问问大家。
现阶段还不太会用C写单片机。

希望:
1.大家帮我挑挑错;
2.如果用C写的话,到底要怎么写啊。有没有什么参考例子可以告知一下
漫天都是51的那种频率可调的方波正在在研究,实在是渣到不知道要怎么开始写。

【程序】死活编译不成功
;-----------------------------------------------------------------------------
;中断服务程序

;-------------------------------------------------------------------------------
LOOP

TEST   BTFSC    PIR1,TMR1IF ;为0(未溢出)时间跳。TMR1计数是否溢出中断
   COMF     PORTD
   GOTO     TEST

   ORG      0004H
   BCF      PIR1,TMR1IF     ;清除TMR1中断标志,从而避免返回主程序后重复响应
   INCF    PORTD             ;实现RD端口计数功能
   RETFIE                    ;中断服务程序返回,程序指针自动加载出栈的断点地址;同时,

;将中断使能位恢复到使能状态,转向执行原来被强行中断的主程序,并处于应急事物准备阶段

;-------------------------------------------------------------------------------
;主程序
;-------------------------------------------------------------------------------

ORG 0000H ;单片机复位地址
MAIN NOP
BSF STATUS,RP0 ;选择数据存储器体1
CLRF TRISD ;定义RD端口输出
BSF PIE1,TMR1TE ;TMR1中断使能-将PIE1的TMR1TE置位
BCF STATUS,RP0 ;STATUS的RP0位清零,选择数据存储器体0-
MOVLW B'00001010' ;-将B'00001010'传至W寄存器,使能低频振荡器
MOVWF T1CON ;将W寄存器的内容传至T1CON寄存器
CLRF PORTD ;RD端清零
MOVLW B'11000000' ;总中断和外围中断使能
MOVWF INTCON
BSF T1CON,TMR1ON ;将T1CON的TMR1ON置位,即启动TMR1定时器
MOVLW FAIDH
MOVWF TMR1 ;重新启动定时器开始计数,赋值
GOTO LOOP ;代表当前偏移地址,等待被中断

END

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 DIFY API Endpoint 问题。
    • ¥20 sub地址DHCP问题
    • ¥15 delta降尺度计算的一些细节,有偿
    • ¥15 Arduino红外遥控代码有问题
    • ¥15 数值计算离散正交多项式
    • ¥30 数值计算均差系数编程
    • ¥15 redis-full-check比较 两个集群的数据出错
    • ¥15 Matlab编程问题
    • ¥15 训练的多模态特征融合模型准确度很低怎么办
    • ¥15 kylin启动报错log4j类冲突