EM78Pxx
基础IO操作:
(1)、操作顺序:先输入,再上拉;先关上拉,再输出。
(2)、单独对位操作:
ior ioc6
and a,@(0xff^(mIO_1+mIO_2))
iow ioc6 ;改输出
ior ioc6
or a,@ (mIO_1+mIO_2)
iow ioc6 ;改输入
mov a,@mIO_1
xor P5,a ;对端口取反
注意:不能出现@(0xff^(mIO_1+mIO_2+mIO_3+mIO_4)) ; 在两个IO口位地址相加还可以正确运算,几个相加就不行了;只能整体赋值。我后面想了个办法解决这个通用问题,我自己写了一个头文件,把所有端口值都宏定义好,要用的时候包含一下,就可以直接写。避免写16进制数的时候犯低级错误。下面分享我写好的头文件。
端口定义,宏定义文件
提取码:3wdo
再改输出的时候,要先对P口写数,因为在输入状态P口的值是不确定的,如果直接改输出,可能输出的值就不是预期的。
ST的单片机没有这个问题,是因为他输入输出的P口寄存器是独立的,但是义隆的是共用一个。
I/O复用
I/