|
|
迪文 T5L ASIC应用开发指南 V11.pdf上明确指出
TMOD 0x89 T0、T1 模式选择,同标准 8051。
T2 中断 0x002B TF2(IRCON.6) IEN0.5 中断响应后需要软件清除 TF2,不然会再次触发中断。
也提到了许多与传统8051一样的“SFR 名称”,以及“T5L ASIC 的 8051 指令集”
然而以下程序,放在OS Builder3.0.2.6中连编译关都过不去!!!
;CPU初始化程序
INITCPU: ;必须配置的系统SFR
MOV CKCON,#00H ;CPU 运行在 1T 模式
MOV T2CON,#70H ;配置扩展中断系统,配置定时器 T2 运行在 Autoload 模式
MOV DPC,#00H ;如果使用 C51 开发,必须配置为0x00
MOV PAGESEL,#01H ;64KB 代码空间
MOV D_PAGESEL,#02H ;32KB MOVX 访问的 RAM 空间,地址为 0x8000-0xFFFF
MOV MUX_SEL,#00H ;不把UART2、UART3 引出来,WDT关闭,P0.4、P0.5,P0.6、P0.7
MOV RAMMODE,#00H ;不占用DGUS变量存储器
MOV PORTDRV,#01H ;驱动强度 +/-8mA
MOV IEN0,#00H ;关闭所有中断
MOV IEN1,#00H
MOV IEN2,#00H
MOV IP0,#00H ;中断优先级用默认值
MOV IP1,#00H
MOV P0,#00H ;输出关闭,是不是输出取决于P0MDOUT
MOV P1,#00H
MOV P2,#00H
MOV P3,#00H
MOV P0MDOUT,#50H 0 0101 0000 ;将两个UART2,3的TX置1
MOV P1MDOUT,#00H 1 0000 0000
MOV P2MDOUT,#00H 2 0000 0000
MOV P3MDOUT,#0FH 3 0000 1111 ;4个全部输出
RET
INIT_T0:
ORL TMOD,#01H ;定时器0工作在16位定时模式,TL0与TH0全用上
CLR TR0
MOV TH0,#HIGH (0BCCDH) ;1ms定时器
MOV TL0,#LOW (0BCCDH)
SETB ET0 ;enable T0 interrupt
SETB EA ;open global interrupt switch
SETB TR0 ;timer0 start run
RET
INIT_T2:
;T2 Autoload模式,T2CON复位值为00H,必须初始化配置值为70H
MOV T2CON,#71H ;
MOV TH2,#00H
MOV TL2,#00H
MOV TRL2H,#HIGH (65364) ;10uS定时器中断=9.9981398809523809523809523809524 uS
MOV TRL2L,#LOW (65364)
ORL IEN0,#20H ;.5 ET2 T2 定时器中断使能控制位,相当于ET2=1
RET
在OS Builder中用以下几句,可以通过初始化编译
TIMER2_Init:
;关定时器2中断
MOVDR 45,R10,1
LDBR R11,EFH,1
AND R10,R11,1
MOVRD R10,45,1
LDWR R10,0xC350 ;16bit 定时器中断 2 设置值,中断时间=(Timer_INT2_Set+1)*10uS。
MOVRD R10,48,2 ;50000*10us=设置定时时间 500ms
;开定时器2中断
MOVDR 45,R10,1 ;DR45=Int_Reg
LDBR R11,10H,1 ;Int_Reg.4=Timer INT1 Enable
OR R10,R11,1
MOVRD R10,45,1
RET
然而“基于T5 CPU的DWIN OS程序开发指南V21.pdf”中又提到了“接口寄存器”方面的相关设置(如上用过)以及“外设操作指令”(如:CONFIG与定时器也有关)
这几方面如何统一起来理解?传统的汇编指令如何在builder中应用?
|
|