在做设计,但是做了好久完全是一脸懵逼。
啥啥都不会,居然还想自己做一做试试。我真的太天真了。
第一步就卡住了,卡了一个星期了。真的,救救孩子吧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