查看: 59|回复: 9
收起左侧

[电池电源管理] 对SEG寄存器的赋值怎么是从00H开始

[复制链接]

364

主题

4021

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-8 19:21 | 显示全部楼层 |返回版面|阅读模式

;************************************************
; 系统寄存器BANK6(LCD)
;************************************************
SEG1  EQU 00H  ;SEG1寄存器
SEG2  EQU 01H  ;SEG2寄存器
SEG3  EQU 02H  ;SEG3寄存器
SEG4  EQU 03H  ;SEG4寄存器
SEG5  EQU 04H  ;SEG5寄存器
SEG6  EQU 05H  ;SEG6寄存器
SEG7  EQU 06H  ;SEG7寄存器
SEG8  EQU 07H  ;SEG8寄存器

SEG1寄存器的地址不是300H吗

363

主题

3729

帖子

1万

积分

资深工程师

发表于 2017-7-8 19:23 | 显示全部楼层 |返回版面
4Bit MCU的寄存器是按BANK划分。

366

主题

3771

帖子

1万

积分

资深工程师

发表于 2017-7-8 19:26 | 显示全部楼层 |返回版面

嗯,BANK0:00H~7FH,BANK1:80H~FFH,BANK2:100H~17FH,BANK3:180H~1FFH,BANK4:200H~27FH,BANK5:280H~2FFH, BANK6:300H~37FH

   SEG的RAM是位于BANK6,所以300H -> 00H(BANK6)是没有错的。

345

主题

3305

帖子

9337

积分

技术达人

发表于 2017-7-8 19:28 | 显示全部楼层 |返回版面

使用是要注意指定BANK区,例:ORM SEG1,06H

363

主题

3729

帖子

1万

积分

资深工程师

发表于 2017-7-8 19:33 | 显示全部楼层 |返回版面

其实也可以不用那么麻烦的,直接头文件中定义SEG1 EQU 300H,SEG2 EQU 301H..........

344

主题

3892

帖子

1万

积分

资深工程师

发表于 2017-7-8 19:57 | 显示全部楼层 |返回版面

嗯,使用时,就不用指定BANK区了,但需要注意的是BANK0以外区域的RAM不用进行直接寻址

364

主题

4021

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-8 20:01 | 显示全部楼层 |返回版面
能举个例子吗?

334

主题

3681

帖子

1万

积分

资深工程师

发表于 2017-7-8 20:03 | 显示全部楼层 |返回版面

SEG1赋值0001B,不能直接 ldi  SEG1,0001B,只能先将0001B存放在临时寄存器(BANK0),再保存到SEG1.

     ldi   zWk0,0001B
      sta  SEG1

342

主题

4099

帖子

1万

积分

资深工程师

发表于 2017-7-8 20:05 | 显示全部楼层 |返回版面
看起来麻烦,其实做起来并没那么麻烦。。

364

主题

4021

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-8 20:10 | 显示全部楼层 |返回版面
嗯,预料中的结果,先结贴吧,多谢大家啦
您需要登录后才可以回帖 登录 | 注册 手机登录

本版积分规则

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