|
楼主 |
发表于 2009-7-30 14:37:30
|
显示全部楼层
是没有设置看门狗,但是同样的情况在AD中断函数中不存在。我把代码给大家贴上,大家帮我看看。谢谢!
#include "io78f0453.h"
#include "nec78f0xb.h"
#include <intrinsics.h>
#include "UART6_intal.h"
void UART6_inital(void);
void Clock_inital(void);
__interrupt void INTSR6_jieshou( void );
unsigned char jieshou_tem;
unsigned char jieshou_flag=0; //----------------接受完毕标志
unsigned char reciv_tem[3];//-------------------接受缓冲全局变量数组
float k=5;//------------------------------接受缓冲计数全局变量
// unsigned char a=0;
void main( void )
{
// unsigned char i;
unsigned int j;
Clock_inital();//---------------时钟模块初始话
UART6_inital();//---------------UART6初始化,波特率19200
__enable_interrupt();//---------中断使能
while(1)
{
if( jieshou_flag==1)//--------判断数据是否接受完毕
{
TXB6=jieshou_tem; //--------发送数据
for(j=0;j<600;j++);
jieshou_flag=0;//-------------发送完毕,接受标志清零
}
}
}
void UART6_inital(void)
{
/* |------|------|------|------|------|------|------|------|*
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
ASIM6 |------|------|------|------|------|------|------|------|
|POWER6|TXE6 |RXE6 |PS61 |PS60 | CL6 |SL6 |ISRM6 |
|------|------|------|------|------|------|------|------|*/
POWER6=1;//-----------POWER6=0:禁止内部操作时钟操作POWER6=1:允许内部操作时钟操作
TXE6=1; //-----------TXE6=0:禁止发送,TXE6=1:允许发送
RXE6=1; //-----------RXE6=0:禁止接受,REX6=1:允许接受
PS61=0; //-----------| PS61 | PS60 |
PS60=1; //-----------| 0 | 0 |:发送不输出校验位,接收无校验接受
//-----------| 0 | 1 |:发送输出零校验,接收按零校验接受
//-----------| 1 | 0 |:发送输出奇校验,接收按奇校验判断
//-----------| 1 | 1 |:发送输出偶校验,接收按偶校验判断
CL6=1; //-----------CL6=0传输数据的字符宽度为7位,CL6=1传输数据的字符宽度为8位
SL6=0; //-----------SL6=0发送数据停止位个数为1位,SL6=1:发送数据停止位个数为2位
ISRM6=1; //-----------ISRM6=0:出错时产生INTSRE6,ISRM6=1:出错时产生INTSR6
SBRF6=1;
SBRT6=0;
/* |------|------|------|------|------|------|------|------|*
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
ISC |------|------|------|------|------|------|------|------|
| 0 | 0 |ISC5 |ISC4 |ISC3 | ISC2 |ISC1 |ISC0 |
|------|------|------|------|------|------|------|------|*/
ISC5=1;//-------------|ISC5|ISC4|
ISC4=0;//-------------| 0 | 0 |:输入源选择TXD6-P112,RXD6-P113
//-------------| 1 | 0 |:输入源选择TXD6-P13,RXD6-P12
ISC3=0;//-------------ISC3=0:RXD6/113输入禁止,ISC3=1:RXD6/P113输入允许
ISC2=0;//-------------ISC2=0:不允许控制TI52输入(P34)ISC2=1:允许控制TI52输入(P34)
ISC1=0;//-------------TI000=0输入源选择P33,TI000=1输入源选择RXD6(P12或P113)
ISC0=0;//-------------ISC0=0:INTP0输入源选择为INTP0(P120),ISC0=1:INTP0输入源选择为RXD6(P12或P113)
PF13=1;//-------------USRT6的输出选择P13
PM13=0;//-------------选择P13为TXD6
PM12=1;//-------------选择P12为RXD6
P13=1; //-----------预置P13为1
CKSR6=0X03;//---------选择串口基本时钟fxclk6为fPRS/8
BRGC6=0x1a;//---------设置分频系数k为52,波特率为9600
SRMK6=0;//------------SRMK6=0,打开UART6接收中断,SRMK6=1,屏蔽UART6接收中断
STMK6=1;//------------STMK6=0;打开UART6发送中断, STMK6=1,屏蔽UART6发送中断
}
void Clock_inital(void)
{
// AMPH=0;//---------------------------AMPH
//---------------------------| 0 |主系统时钟小于10MHz
//---------------------------| 1 |主系统时钟大于10MHz小于20MHz
EXCLK=0;//----------- |EXCLK|OSCSEL|
OSCSEL=0; //---------| 0 | 0 |:X1振荡器停止
//---------| 0 | 1 |:X1振荡器运行,引脚接晶振
//---------| 1 | 0 |:X1振荡器停止,引脚为IO
//---------| 1 | 1 |:外部时钟输入模式,引脚P121为IO,P122为外部时钟输入
// XTSTART=0;//----------|XTSTART|EXCLKS|OSCSELS|
// EXCLKS=0;//-----------| 0 | 0 | 0 |:XT1副系统时钟关闭,连接引脚为IO
// OSCSELS=0;//----------| 0 | 0 | 1 |:XT1副系统时钟振荡,引脚连接32768Hz晶振
//----------| 0 | 1 | 0 |:XT1副系统时钟关闭,引脚为IO
//----------| 0 | 1 | 1 |:XT1副系统时钟为外部时钟输入模式P123为IO ,P124为外部时钟输入引脚
//----------| 1 | * | * |:XT1副系统时钟振荡,引脚连接32768晶振
CLS=0;//--------------CLS=0:选择CPU时钟为主系统时钟,CSL=1:选择CPU时钟为副系统时钟
CSS=1;//--------------| CSS | PCC2 | PCC1 | PCC0 |
PCC2=0;//-------------| 0 | 0 | 0 | 0 |:CPU时钟选择为fxp
PCC1=0;//-------------| 0 | 0 | 0 | 1 |:CPU时钟选择为fxp/2
PCC0=0;//-------------| 0 | 0 | 1 | 0 |:CPU时钟选择为fxp/4
//-------------| 0 | 0 | 1 | 1 |:CPU时钟选择为fxp/8
//-------------| 0 | 1 | 0 | 0 |:CPU时钟选择为fxp/16
//-------------| 1 | 0 | 0 | 0 |:CPU时钟选择为fsub/2
RSTS=0;//-------------RSTS=0:内部高速振荡器为精确稳定,RSTS=1:内部高速振荡器为稳定工作
LSRSTOP=1;//----------LSRSTOP=0:内部低速振荡器运行,LSRSTOP=1:内部低速振荡器停止运行
RSTOP=0;//------------RSTOP=0内部高速振荡器振荡,RSTOP=1:内部高速振荡器停止
MSTOP=1;//------------MSTOP=0:外部高速振荡器X1振荡,MSTOP=1:外部高速振荡器X1停止
MCS=0; //-------------MCS=0:主系统时钟选择为内部高速振荡器,MCS=1主系统时钟使用外部高速振荡时钟
XSEL=0;//-------------|XSEL|MCM0|
MCM0=0;//-------------| 0 | 0 |:主系统时钟fxp和外部硬件时钟fprs选择为内部高速振荡时钟frh
//-------------| 0 | 1 |:主系统时钟fxp和外部硬件时钟fprs选择为内部高速振荡时钟frh
//-------------| 1 | 0 |:主系统时钟fxp和选择为内部高速振荡时钟frh,外部硬件时钟fprs选择为fxh
//-------------| 1 | 1 |:主系统时钟fxp和外部硬件时钟fprs选择为高速系统时钟fxh
//---------------------------时钟fPRS选择为内部高速振荡
//---------------------------时钟fRH
}
#pragma vector = INTSR6_vect
__interrupt void INTSR6_jieshou( void )
{
k=65;
SRIF6=0;
jieshou_flag=1;
jieshou_tem=RXB6;
} |
|