今天,在公司调试自动卷帘门程序,发现只做为键盘输入的 P0.1 口总是做 '0' 状态执行,而端口电压则正常!——新做的PCB使没有问题的。换938!依旧!
谁影响了938?单测 P0.1 做输出,正常;单测 P0.1 做输入,也正常呀!?
;设置P0口
MOV P0M1,#0xFF ;设置P0为准双向口
MOV P0M2,#0x00
MOV P0,#0xF7
TEST_P01:
JB OPENKEY,STUDY1
SETB LED
SJMP TEST_P01
STUDY1:
CLR LED
SJMP TEST_P01
呵呵……朋友,你知道我加了一条什么指令,938的P0.1口就不能使用了?
ACALL READ_AD
READ_AD:
MOV AD0INS,#0x10 ;0001 0000, 选择channel
MOV ADMODA,#0x10 ;0001 0000, 选择转换工作模式:单次转换模式
MOV ADMODB,#0x20 ;0010 0000, 500Khz < ADC CLK < 3.3Mhz
MOV AD0CON,#0x05 ;选择转换触发模式;并立即启动
………………
RET
竟然是与P0.1口毫不相干的启动AD指令!OK,好办—— 把 MOV AD0CON,#0x01 追加到AD结束处,一切正常!
看来确实做任何事情都要有始有终呀!使用AD时,启动;用完了,关闭。