发件人 : 王 鹏辉
主题 : 匠人前辈你好! 匠人前辈您好: 在您的百宝箱看了很多文章, 真是受益菲浅,在这里我首先要感谢您的无私奉献 ! 看到你有多篇关于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向您请教,请您原谅!
答:你的提问非常仔细。这也是促成我答复你的原因之一。如果你不介意,我将这些问答放入百宝箱,你看可好? |
文章评论(0条评论)
登录后参与讨论