使用12M晶振,使T0工作在方式3,从P1.0输出周期为200us占空比为50%的方波,从P1.1输出周期为100us占空比为50%的方波,T1工作在方式2,从P1.2输出周期为80us占空比为50%的方波,(T1没有中断申请标志位,使用读取计数数据的方法进行判断)。请用汇编写出程序。
由于我刚学
单片机,还不会C语言,请用汇编指点。下边是我写的程序,输出频率误差好大啊,请指点一下该怎么写,谢谢。
ORG 0H
AJMP START
ORG 000BH
LJMP SUB_P10
ORG 0001BH
AJMP SUB_P11
ORG 0100H
START:
MOV TMOD,#13H;设置T0方式3,T1工作方式2,都为软件启动
MOV TL0,#9CH ;给定时器TL0赋初值,使定时100US
MOV TH0,#0CEH ;给定时器TH0赋初值,使定时50US
MOV TL1,#0H ;给定时器T1赋初值,使定时40US
MOV TH1,#00H ;给定时器T1赋预装值
ANL P1,#0F8H ;P1低三位清零
SETB ET0 ;开T0中断使能位
SETB ET1 ;开T1中断使能位
SETB EA ;
ORL TCON,#50H;开始计数
LOOP: CLR C ;
MOV A,#28H ;设比较大小基数
MOV R0,TL1 ;T1计数值读入A
SUBB A,R0 ;比较计数是否到
JC SUB_P12 ;C为1,则定时到时,转移
WAIT:NOP ;等待中断
;NOP
SJMP LOOP ;无中断则转移,
ORG 0150H
SUB_P12:CPL P1.2 ;处理P1.2
LJMP WAIT ;
SUB_P11:MOV TH0,#0CEH ;给定时器TH0赋初值
CPL P1.1 ;
RE
ti
SUB_P10:MOV TL0,#9CH ;给定时器TL0赋初值
CPL P1.0 ;
RETI
END
一周热门 更多>