SH69P56的若干问题请教

[复制链接]
5889|46
手机看帖
扫描二维码
随时随地手机跟帖
wushao|  楼主 | 2008-3-12 20:39 | 显示全部楼层 |阅读模式
SH69P56和SH69P56F有什么区别?

SH69P56中     
ComBuf330          EQU     E4H
ComBuf331          EQU     E5H
ComBuf340          EQU     E6H
ComBuf341          EQU     E7H
ComBuf350          EQU     E8H
ComBuf351          EQU     E9H
SEG1               EQU     300H
SEG2               EQU     301H
SEG3               EQU     302H

这样定义用户寄存器然后程序中直接引用没什么问题把?
SH69P56无BANK,程序跳转应该随便跳吧?
SH69P56中只有IRQPB ,除B口之外的其他数据端口不能中断唤醒么??

上述问题困惑已9,求高人回答下!




warm_ice| | 2008-3-13 09:26 | 显示全部楼层

这样

1.SH69P56F,其中的F表示封装形式.
2.EQU定义寄存器别名,当地址第1位为非数字时,前面要加零,如0E4H.直接引用没问题.
3.SH69P56的ROM为4K,无ROM分页,用JMP可以任意跳转,但BA0,BA1,BA2,BA3,BAZ,BNZ等这样的跳转只能寻址2K.
4.SH69P56只有PB口做为外部中断口.

使用特权

评论回复
wushao|  楼主 | 2008-3-13 09:43 | 显示全部楼层

谢谢

楼上真是好人,每天准时给人回答问题

使用特权

评论回复
wushao|  楼主 | 2008-3-15 10:58 | 显示全部楼层

又遇到问题了

Clk_Chk1           EQU     07FH
IntFlags0          EQU     080H

这是我在头文件中定义的

然后我在程序中
ORIM  Clk_Chk1,0001B
没有错误

但是
ORIM  IntFlags0,0001B在编译的时候就会出现错误,提示为:
Memory Address is out of range,truncated to 7 bits
知道应该是数据分区的问题,但SH69P56无BANK
那么内存地址7F以上的 怎么定义然后引用啊?

使用特权

评论回复
warm_ice| | 2008-3-15 12:55 | 显示全部楼层

这样

RAM也是分区的,00H~7FH是分区0,这个分区的寄存器任何指令都可以操作,后面的寄存器则有些指令无法直接操作,IntFlags0的地址为80H,即分区1,像ORIM这种指令是无法直接操作的,帮会报错。

请你查看一下指令,指令代码中后面带bbb的,这些指令就可以对所有的RAM直接操作,这个bbb就是指RAM的分区值.

使用特权

评论回复
wushao|  楼主 | 2008-3-15 15:53 | 显示全部楼层

那怎么办?

那怎么办?在用ORIM对 大于7F的空间进行操作的时候  在 7F内建 临时寄存器??
再问个问题,下面的程序有问题嘛?
我要对Clk_Sec0以下的14个空间(包括Clk_Sec0)(即7个字节)进行累加,注意Clk_Sec0是一个字节的低4位,Clk_Sec1是一个字节的高四位,以此向下类推。

Clk_Chk_Deal:
TIMES SET 0
?1:
ADD8  Clk_Chk1,Clk_Chk1,Clk_Sec1+2*TIMES,Clk_Sec0+2*TIMES  
//上面为宏指令
TIMES SET TIMES+1
LDI   TEMP0,TIMES
CJB4  TEMP0,7,?1     //TEMP0里的TIMES<7时往上跳

使用特权

评论回复
warm_ice| | 2008-3-17 09:02 | 显示全部楼层

这样

1.对,像您说的一样,要在00~7FH间建一个临时寄存器,先对临时寄存器操作,再用STA指令存回要操作的寄存器.

2.这个小程序看起来大的循环应该是正确的,但是ADD8  Clk_Chk1,Clk_Chk1,Clk_Sec1+2*TIMES,Clk_Sec0+2*TIMES  这个宏不知道你是怎么定义的,如果仅仅是8位加法,那Clk_Sec1+2*TIMES及Clk_Sec0+2*TIMES 应该仅仅是在Clk_Sec1和Clk_Sec0的数值上进行运行,而不是PC指针.要改变PC指针的话,可能要用到间接寻址,即DPH,DPM,DPL及INX.

使用特权

评论回复
wushao|  楼主 | 2008-3-17 13:15 | 显示全部楼层

很恼火的问题

下面程序居然有4个错误,是在是找不出来在哪。
  LDI    TEMPL,00H
  LDI    TEMPH,00H
  FeedBack_Check:
  LDA    PA                                  //读A口数据
  STA    I                                   //存于I
  LDI    I,PASDA                             //PASDA=0100B
  AND    I        
68BAZ    Check_Over                          //PA2为0则跳转
  ADDI8  TEMPH,TEMPL,00H,01H                 //TEMPH,TEMPL  8位+1
  CJB8   TEMPH,TEMPL,06H,04H,FeedBack_Check //TEMPH,TEMPL<100时向上跳
71Check_Over:
  ANDIM  PA,PASCL^0FH
  ORIM   PACR,PASDA
  CALL   NOP6
  RTNI

错误为:
71:ad insturction
68:Symbol not defined
68:Crossing ROM Bank boundary
71:parse error

怎么回事啊?68行的BAZ用得有问题码???

使用特权

评论回复
wushao|  楼主 | 2008-3-17 13:18 | 显示全部楼层

上面的问题更正下

错误为:
71:B
ad insturction

使用特权

评论回复
warm_ice| | 2008-3-17 13:19 | 显示全部楼层

这样吧

我想可能是你的71行标号后面的冒号不对,是不是全角的,要用半角的才行.

使用特权

评论回复
wushao|  楼主 | 2008-3-17 13:52 | 显示全部楼层

真惭愧

啥都不说了
惭愧ING

使用特权

评论回复
wushao|  楼主 | 2008-3-17 16:44 | 显示全部楼层

到底看哪个?

SH69P56_K56 规格书.中关于RAM的描述,发现有不一致的地方,以哪个为准??
  

使用特权

评论回复
warm_ice| | 2008-3-17 20:37 | 显示全部楼层

是一致的

216是10进制,28H~FFH是16进制,FFH-28H后等于D7,转为10进度为215,再加上1,即216.完全一致.

使用特权

评论回复
wushao|  楼主 | 2008-3-19 11:10 | 显示全部楼层

仿真器怎么用?

这个仿真器怎么用啊?
上面的电路是不是可以仿真一些小程序?
仿真自己项目的程序是不是图中所示位置接线至自己的PCB板??

使用特权

评论回复
wushao|  楼主 | 2008-3-19 11:17 | 显示全部楼层

如下

上面仿真器的电路图 哪有下载?

使用特权

评论回复
warm_ice| | 2008-3-19 11:46 | 显示全部楼层

这样

1.仿真系统由2部分组成,仿真器及仿真板,仿真器是通用的,任何型号的IC均可使用,仿真板是专用的,每一颗或几颗IC有一个专用的仿真板,有了这套系统,就可以仿真相应型号IC的程序.如果没有外接目标板,做一些I/O操作,用示波器来查看信号等程序当然是没有任何问题的.
2.你画的部分是接PCB板的,没错.
3.您需要仿真器的电路图?想做些什么呢?

使用特权

评论回复
wushao|  楼主 | 2008-3-19 13:58 | 显示全部楼层

如下

使用特权

评论回复
wushao|  楼主 | 2008-3-19 13:59 | 显示全部楼层

问题

使用特权

评论回复
wushao|  楼主 | 2008-3-19 14:00 | 显示全部楼层

问题2

使用特权

评论回复
wushao|  楼主 | 2008-3-19 14:04 | 显示全部楼层

问题3

中颖推销人员就给了我这几样东西
也未说明做何用途
以前只用过JTAG口仿真,没这么复杂
现在毫无头绪,求详细解答。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

33

帖子

0

粉丝