新會員
Joined
: 2008/5/1 19:06 最後登入時間
: 2008/11/17 22:33
Group:
註冊會員
Level : 1 HP : 0 / 21 MP : 3 / 1041 EXP : 86
|
ORG 0x000 GOTO START ORG 0x004 ;中断服务程序 BCF PIR1,RCIF ; 清中断标志 NOP ;保护现场 略 ; MOVF RCREG,W ;读接收数据 略 NOP NOP MOVLW 0x00 ; NOP NOP MOVWF 0x6 ;B口输出低点亮发光二极管 NOP NOP NOP BCF 0x7,5 ;PORTC.5为低发光二极管亮 NOP NOP CLRF PIR1 ;清中断标志 NOP ;回复现场 略 RETFIE ;中断返回
ORG 0x100 START NOP ;主程序 CALL PIC_INIT ;调USART串口异步接收 ;初始化 LOOP2 NOP ;主程序在这里死循环,中断时 ;应能跳出并返回 NOP NOP NOP GOTO LOOP2 ;主程序在这里死循环 PIC_INIT NOP ;串口接收初始化 NOP ; BCF STATUS,RP0 ; 选择BANK0 CLRF 0x06 BSF STATUS,RP0 ; 选择BANK1 MOVLW B'00000000' MOVWF TRISB ;B口方向为输出 NOP MOVLW 0x0ff ;B口8位为高,灯熄灭 MOVWF 0x6 CLRF 0x7 BSF STATUS,RP0 ;选择BANK1 MOVLW B'10000000' MOVWF TRISC ;端口C方向,RC7/RX/DT为输入,RC0-RC6为输出。PORT C direction BSF 0x7,5 PORTC.5为高灯息灭 MOVLW 0x12 ;送波特率9600 bps @ 12MHZ,Async, BRGH=1 MOVWF SPBRG ;送波特率 ;MOVLW B'00100100' ; MOVWF TXSTA ;发送使能、8位、异步模式 8 Bit, Async Mode, Enable ; BSF INTCON,PEIE ;外围接口中断使能位 ; BSF PIE1,TMR2IE ;TMR2到PR2匹配中断使能 ;这几条去掉了,接收初始化发送的不写了 ;BSF STATUS,RP0 ;选择BANK0 ;置RC6\RC7为低电平,没写。 ; MOVLW B'00100100' ; MOVWF TXSTA ;发送使能8 Bit, Async Mode, Enable BCF STATUS,RP0 ;下面开始写了 MOVLW B'10010000' ;接收使能 MOVWF RCSTA ;8 Bit,Async Mode, Enable CLRF INTCON BSF INTCON,PEIE ; 外围接口中断使能 BSF STATUS,RP0 CLRF PIE1 BSF PIE1,RCIE ;开接收中断 MOVLW 0x0C0 MOVWF INTCON ;开外围接口中断和总中断 ; BCF STATUS,RP0 ; BSF INTCON,GIE ;开总中断 RETURN END 发送单片机波特率与接收单片机同 MOVLW 0x12 ;送波特率9600 bps @ 12MHZ,Async, BRGH=1 MOVWF SPBRG ;送波特率 程序设计成循环连续发送,在发送单片机TX—17脚能测到方波,周期约50微秒。上面的程序把亮灯指令放到主程序中,灯能点亮,放到中断服务程序中灯不能点亮,好像中断没响应,中断的三道开关我都打开了 BSF PIE1,RCIE ;开接收中断 MOVLW 0x0C0 MOVWF INTCON ;开外围接口中断和总中断 不知道中断为什么不响应? 请教各位老师,各位年轻年长的老先生?
發表於: 2008/11/17 9:55
|