PC equ 0x02 kk equ 0x08 LCDAddr equ 0x0A LCDDate equ 0x0B P5 equ 0x05 P6 equ 0x06 ;;================================================================================================= TestBegin:
Loop: mov A,kk ; 数码管显示 mov P6,A mov A,@0xF0 call delay
mov A,@0xFB ; 放电 iow P5 clr P5 ; P52为输出口,然后置低电平,可以非常快速的放电
mov A,@0x10 ; 延时一下保证充分放电 call delay
mov A,@0xFE ; 切换P50口为输出口,准备充电(这个是参考用的标准电阻,一般用5环) iow P5 mov A,@0x01 ; 置1,高电平,对电阻R1充电 mov P5,A /* 不断的读端口,因为RC充电需要时间,所以不同电阻充电时间不同,这个就是普通端口测NTC的原理 不过这里我有问题问一下,如果这个过程发生中断怎么办?误差会相当的大 另外,KK只是一个 8位的计数器,如果计数溢出怎么办? 如果两次测试数据位于 255 两侧,例如,这次是 260 ,则因为溢出而重置为 5 而下一次测出为 250 ,那么这两个数据就“囧”了 */ clr kk LL: jbc P5,2 jmp Loop1 inc kk jmp LL
Loop1: mov A,kk ; 数码管显示 mov P6,A mov A,@0xF0 call delay
mov A,@0xFB ; 放电,跟上面一样 iow P5 clr P5 mov A,@0x10 call delay
mov A,@0xFD ; 这次轮到 P51 为输出口了,因为我们需要对代测电阻充电 iow P5 mov A,@0x03 ; P51高电平,RV 立刻充电,然而楼主顺便将P50也置1了, ; 所以示波器会看到立刻变成高电平,而不是充电 mov P5,A
clr kk LL1: jbc P5,2 ; 跟上面一样,等待高电平,计数。 jmp Loop inc kk jmp LL1
delay: mov kk,A delay_L: djz kk jmp delay_L ret
|