原来的代码非常长,同时因为公司的保密制度原因,我刚刚尝试写了另外一个简单的代码准备发上来,结果,这个简单的却不存在Z位不能置1的问题!
难道我那个程序中断后Z位不能置1是因为耗电太多的原因吗?毕竟同一个延时子程序,中断前正常,中断后不正常,想不到其他原因
刚刚写的这个简单的代码,和我遇到问题的那个采用同样的中断处理方式,发上来给大大看看是不是中断处理有缺陷,请指点一下,感谢!
- #include p16f1823.inc
- __CONFIG _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF
- __CONFIG _CONFIG2, _WRT_OFF & _PLLEN_OFF & _STVREN_OFF & _BORV_LO & _LVP_OFF
- errorlevel 0,-302
-
- ORG 0000H
- GOTO START
- ORG 0004H
- BANKSEL IOCAF
- CLRF IOCAF
- BANKSEL TOSH
- CLRF TOSH
- MOVLW 10H
- MOVWF TOSL
- RETFIE
- INTPP ORG 0010H
- BCF PORTC,0
- DELAY2;延时程序,蓝灯闪
- MOVLW 0F0H
- MOVWF 75H
- CLRF 74H
- INCFSZ 74H,F
- GOTO $-1
- DECFSZ 75H,F
- GOTO $-3
-
- BTFSS 73H,1
- GOTO $+4
- BSF PORTC,1
- BCF 73H,1
- GOTO DELAY2
- BCF PORTC,1
- BSF 73H,1
- GOTO DELAY2
- START ORG 0040H
- BANKSEL TRISC;初始化
- BCF TRISC,0
- BCF TRISC,1
- BANKSEL PORTC
- BCF PORTC,0
- BCF PORTC,1
- BANKSEL ANSELA
- BCF ANSELA,4
- BANKSEL IOCAF
- CLRF IOCAF
- MOVLW B'10001000'
- MOVWF INTCON
- BANKSEL IOCAN
- BSF IOCAN,4
- DELAY1;延时程序,黄灯闪
- BANKSEL PORTC
- MOVLW 0F0H
- MOVWF 72H
- CLRF 71H
- INCFSZ 71H,F
- GOTO $-1
- DECFSZ 72H,F
- GOTO $-3
-
- BTFSS 73H,0
- GOTO $+4
- BSF PORTC,0
- BCF 73H,0
- GOTO DELAY1
- BCF PORTC,0
- BSF 73H,0
- GOTO DELAY1
- END
|