No.12612 作者:slightdark 邮件:zxq0917@163.com ID:85886 登陆:2次 文章数:1篇 最后登陆IP:202.105.113.50 最后登陆:2009/12/23 13:59:51 注册:2007/8/2 9:04:22 财富:106 发帖时间:2007/8/2 10:27:39 发贴者IP:219.134.109.53 标题:slightdark:求助,有用过义隆单片机的朋友帮帮忙 摘要:No.12612求助,有用过义隆单片机的朋友帮帮忙 我用的是义隆的EM78P153S单片机,最近编写了一个恒温控制与抽水的程序。P50,P60,P61,P62为输入口,P50内部下拉,P60,P61,P62内部上拉。如果P61口在上电前按地的话,上电后会出现电流持续过大,单片机迅速发热的情况。如果P61口在上电前没有接地,则工作基本正常,工作电流在10mA以下。其他的输入口都不会出现这种情况。试烧几个单片机都是这样。P61口只是普通IO口,并无第二功能,为什么会出现这样的情况呢?怎么样能解决这个问题? 还有,就是如果P62口所接的按键如果连续20分钟不动作,单片机进入休眠。因为程序休眠前采用TCC中断来计时,所以20分钟后是在中断服务程序中进入睡眠方式,醒来后再返回主程序,这样设计程序是否妥当?我在书上没有看到有这样设计程序的。 我编写的程序如下: ;*******************输入输出口定义*********************** P5 EQU 0X05 P6 EQU 0X06 ;*******************控制寄存器*************************** IOC5 EQU 0X05 IOC6 EQU 0X06 IOCB EQU 0X0B IOCC EQU 0X0C IOCD EQU 0X0D IOCE EQU 0X0E IOCF EQU 0X0F RF EQU 0X0F ;*******************特殊功能寄存器*********************** TCC EQU 0X01 PC EQU 0X02 PSW EQU 0X03 ;********************用户自定义寄存器******************** T1 EQU 0X10 ;计时寄存器 T2 EQU 0X11 T3 EQU 0X12 LP_CNT0 EQU 0X13 ;循环计数寄存器 LP_CNT1 EQU 0X14 LP_CNT2 EQU 0X15 LP_CNT3 EQU 0X16 STACK_A EQU 0X17 ;A寄存器内容保存寄存器 STACK_S EQU 0X18 ;状态寄存器内容保存寄存器 ;********************位定义****************************** WATER1 EQU 0X00 ;入水水箱 WATER2 EQU 0X01 ;出水水箱 KY EQU 0X02 ;按键 ALARM EQU 0X07 ;报警蜂鸣器 FIRE EQU 0X04 ;加热继电器 PUMP EQU 0X05 ;水泵 TMPR EQU 0X00 ;测温度电阻 ORG 0X00 ADD A,@0XFF ADD A,@0XFF ADD A,@0XFF JMP MAIN ORG 0X08 MOV STACK_A,A ;存储A值 SWAP STACK_A SWAPA PSW ;存储状态寄存器值 MOV STACK_S,A CLR RF JMP TCCINT INT_RET: SWAPA STACK_S ;恢复状态寄存值 MOV PSW,A SWAPA STACK_A ;恢复A值 RETI MAIN: MOV A,@0X0 ;禁看门狗 IOW IOCE MOV A,@00001111b ;P60,P61,P62输入,P67,64,65输出 IOW IOC6 MOV A,@00000001b ;p50输入 IOW IOC5 MOV A,@00000111b ;TCC分频1:256 CONTW MOV A,@130 ;20分钟延时 MOV T1,A MOV A,@93 MOV T2,A MOV A,@3 MOV T3,A MOV A,@00000001b ;允许TCC中断 IOW IOCF NOP NOP MOV A,@11111000b ;P60,P61,P62上拉使能 IOW IOCD MOV A,@10110000b ;P64,P65,P67漏极开路使能 IOW IOCC MOV A,@01111110b ;p50下拉使能 IOW IOCB MAIN_1: JBC P6,WATER2 ;出 ......
>>返回讨论的主题
|