原创 关于EM78P806,答网友提问【转】

2006-12-5 00:03 5531 13 13 分类: MCU/ 嵌入式

关于EM78P806,答网友提问
cxjr 发表于 2006-6-25 19:48:00  阅读全文(515) | 回复(0) | 引用通告(5) | 编辑



 发件人 :  王 鹏辉


主题 :  匠人前辈你好! 
  
 
 
匠人前辈您好:
   在您的百宝箱看了很多文章, 真是受益菲浅,在这里我首先要感谢您的无私奉献

    看到你有多篇关于EM78系列单片机的文章,我想您对该系列单片机应该很有研究
,所以想请教几个问题
    1。我用EM78P806做一个定时开关,但对于806自带的LCD驱动这一块不是很明白。
DATASHEET上对于
IOCB和IOCC是这么说的:
IOCB(LCD ADDRESS):BIT6~BIT0=LCDA6~LCDA0
IOCC(LCD DATA) : BIT7~BIT0=LCD RAM DATA REGISTER
假如我现在向LCD ADDRESS为0X22中写入数据0X45所要的命令应该是什么?
下面的命令对不对呢?


MOV A ,@0X22
IOW IOCB
MOV A ,@0X45
IOW IOCC


 答:对LCD RAM的操作属于间接寻址模式。也就是说要先在IOCB中设置地址,然后对IOCC进行操作。你的程序应该是对的。


2。
EM78P806的PROT8,PORT9既可以做为NORMAL I/O PROT也可以作为SEGMENT OUTPUT来驱
动LCD板。我现在要用806来驱动LCD板,我已经在RB和IOCA中把他们设置为SEGMENT OUTPUT,那是否还需要在IOC8,IOC9中把他们再设置为输出?亦或我需先在IOC8,IOC9
中把这两个端口设置为输出,再在RB和IOCA中把他们设置为SEGMENT OUTPUT?


 答:如果IO口被设置为LCD驱动口了,应该不再需要设置其I/O属性。不过这一点我没有特意验证过。因为我的习惯是在初始化时把所有特殊功能寄存器都赋一次值。至于究竟应该先设置哪个寄存器,应该没有关系。
 


3.
我的MCU工作电压是5V,LCD工作所需电压亦为5V,在程序中我已经设置LCD OPERATION VOLTAGE为5V,那在硬件连接上是否直接将MCU的SEG脚和COM脚与LCD对应的管脚相连即
可?
 答:对的
 
4。
806的CARRY FLAG是不是也是在借位或进位的时候置0,没有发生借位或进位置1? 比如我想计算A-10的值,假设A大于10 ,用ADD A ,246之后 ,R3的CY应该是0对吧? 如果A大于5的话,执行过SUB A ,@5后,CY也是0是吧?


 答:关于C标志。加法时是进位时置1,未进位时置0;减法时是借位时置0,未借位时置1
5.
只有当计算结果为0的时候ZERO标志位才会置1,如果结果是负数,ZERO标志位是0是吗?


 答:在汇编里其实是没有真正的负数的。即使有也是人为定义的。只有结果=0时,ZERO标志位才会置1。
6.
PORT7端口可以通过程序设置为PULL HIGH,我想在PORT7端口上的每个PIN上接一个按键,
我把PORT7设置为
PULL HIGH是不是就可以代替上拉电阻了? 不知道806内置的上拉电阻是多少欧姆
?DATASHEET上没有说明.


 答:PULL HIGH可以代替上拉电阻,约100K左右。但不精确。


这几个是困扰我多时的问题,由于我是初学单片机,问的问题比较菜,希望匠人前辈
能予以解答,感激不尽!!我现在由于条件受限,不能登陆MSN向您请教,请您原谅! 


 答:你的提问非常仔细。这也是促成我答复你的原因之一。如果你不介意,我将这些问答放入百宝箱,你看可好?
 
 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
13
关闭 站长推荐上一条 /3 下一条