迪文科技论坛

 找回密码
 立即注册
搜索
查看: 1546|回复: 2

OS汇编

[复制链接]

1

主题

1

回帖

66

积分

注册会员

Rank: 2

积分
66
发表于 2019-11-19 11:24:06 | 显示全部楼层 |阅读模式
迪文 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中应用?


回复

使用道具 举报

0

主题

1276

回帖

5622

积分

论坛元老

Rank: 8Rank: 8

积分
5622
发表于 2019-11-19 11:45:36 | 显示全部楼层
OS Builder3.0.2.6 这个编译器 , 只支持迪文OS开发指南里面的汇编指令, 格式也要按照文档上的 。
回复

使用道具 举报

1

主题

1

回帖

66

积分

注册会员

Rank: 2

积分
66
 楼主| 发表于 2019-11-19 19:46:38 | 显示全部楼层
为什么不用CONFIG也能启用定时器,恰巧默认的可以吗?还有屏上仅有的可支配的TX4 & RX4好象也机会设置成IO口了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2026-4-15 02:50 , Processed in 0.033082 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表