求打开和禁用看门狗的C语言程序
TMS320F2812串行口PC机通信例程//----------------------------------------------------//----------------------------------------------------// 名称: SCI串行口数据收发,下位机测试程序// 文件:Example_281xsci_demo.c// 规约:此程序用于进行DSP串口数据收发的演示,需要事先// 将DSP的SCI-A串行口与计算机的串行口相连;// 程序在RAM中运行,并使用CPU定时器0与串行口中断.// 说明:// 此程序向上位机定时发送数据,包括XF控制的闪灯状// 态与当前闪灯周期的大小;在运行时,程序另可接收// 上位机发送的指令或数据,用以改变闪灯状态或周期.//// 开关灯指令选择:// 内容| FF | 00// 功能| 开灯| 关灯//// 发送数据类型选择:// 内容| FF | 00// 功能| 数据| 指令//// 以下"发送"与"接收"均是上位机的操作// 即"上位机发送"与"上位机接收"// 数据发送格式:// AA | 00/FF | (00/FF)/XX |// 帧起始位|指令/数据选择位|(开关灯指令)/定时周期低字节|// XX | BB// 定时周期高字节 |帧结束位//// 数据接收格式:// CC | XX |// 帧起始位 |(开关灯指令)/定时周期低字节|// XX | 00/01 | DD// 定时周期高字节 | LED灯状态位 |帧结束位//// 可用串口调式助手或自编的上位机程序调试// // 作者:mrhfzing// 日期:2008-10-04// 修订:First Released//-----------------------------------------------------//-----------------------------------------------------//头文件#include "DSP281x_Device.h"#include "DSP281x_Examples.h"//函数原型声明 interrupt void CpuTimer0Isr(void); interrupt void SciaRxIsr(void); void SciaFifoInit(void); void SciaInit(void); void SciaXmit(int a);//全局变量定义 unsigned long lngTimerPrd; //CPU定时器定时周期 char chrDataReceived[5];//串行口接收数据存储数组 char chrDataSent[5]; //串行口发送数据存储数组 Uint16 intLedStatus; //LED当前的亮灭状态 Uint16 intCanRunSignal; //允许运行标志 Uint16 intLedEnable; //使能LED变量 void main(void) {//局部变量定义 Uint16 i;//1.初始化系统控制寄存器/PLL/看门狗/时钟 InitSysCtrl();//2.配置GPIO的功能 EALLOW;//设置D3(LED)的控制I/O GpioMuxRegs.GPFMUX.bit.XF_GPIOF14 = 0; //将GPIOF14配置为I/O口 GpioMuxRegs.GPFDIR.bit.GPIOF14 = 1; //将GPIOF14配置为输出端口//设置SCI串行通信用的GPIO管脚为外设功能 GpioMuxRegs.GPFMUX.bit.SCITXDA_GPIOF4 = 1; GpioMuxRegs.GPFMUX.bit.SCIRXDA_GPIOF5 = 1; EDIS;//3.初始化PIE中断 DINT; //禁用中断 IER = 0x0000; //禁用CPU中断 IFR = 0x0000; //清CPU中断标志位//初始化PIE控制寄存器 InitPieCtrl();//初化PIE向量表 InitPieVectTable();//4.初始化中断服务程序 EALLOW; PieVectTable.TINT0 = &CpuTimer0Isr; PieVectTable.RXAINT = &SciaRxIsr; EDIS; InitCpuTimers(); ConfigCpuTimer(&CpuTimer0,150,1000000); StartCpuTimer0();//5.使能上述所有中断 PieCtrlRegs.PIECTRL.bit.ENPIE = 1; //使能PIE PieCtrlRegs.PIEIER1.bit.INTx7 = 1; //使能CPU定时器中断 PieCtrlRegs.PIEIER9.bit.INTx1 = 1; //使能串行口接收中断 IER = M_INT1 | M_INT9; //使能CPU中断:组1与组9 EINT;//6.初始化串行口设置 SciaInit(); SciaFifoInit();//7.程序主循环 for(;;) { if(intCanRunSignal == 1) //检查CPU定时中断是否发生 { for(i = 0; i { SciaXmit(chrDataSent[i]); } intCanRunSignal = 0; //复位允许运行标志 if(SciaRegs.SCIFFRX.bit.RXFIFST !=0 ) {//以下代码用于复位FIFO指针,即"清空FIFO" SciaRegs.SCIFFRX.bit.RXFIFORESET = 0; //复位FIFO指针 NOP; SciaRegs.SCIFFRX.bit.RXFIFORESET = 1; //重新使能接收FIFO NOP; } } } }//--------------------------------------------------//main函数结束//--------------------------------------------------//其他功能函数//串行数据发送函数 void SciaXmit(int a) { SciaRegs.SCITXBUF = a; }//CPU定时器中断程序 interrupt void CpuTimer0Isr(void) { CpuTimer0.InterruptCount++; intCanRunSignal = 1; if(intLedEnable == 0x00FF) { if(CpuTimer0.InterruptCount % 2 ==1) { GpioDataRegs.GPFSET.bit.GPIOF14 = 1; intLedStatus = 1; } else { GpioDataRegs.GPFCLEAR.bit.GPIOF14 = 1; intLedStatus = 0; } } else { GpioDataRegs.GPFCLEAR.bit.GPIOF14 = 1; intLedStatus = 0; }//为发送单元组织数据 chrDataSent[0] = 0xCC; chrDataSent[1] = lngTimerPrd & 0x00FF; chrDataSent[2] = lngTimerPrd >> 8; chrDataSent[3] = intLedStatus; chrDataSent[4] = 0xDD;//提交CPU定时器中断 PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; }//串行口初始化程序 void SciaInit(void) {//1停止位/无校验/非自测/空闲线协议/8位字符长度 SciaRegs.SCICCR.all = 0x0007; //0000 0000 0000 0111//复位串口/禁用唤醒与休眠/使能发送与接收 SciaRegs.SCICTL1.all = 0x0003; //0000 0000 0000 0011//使能RXRDY中断 SciaRegs.SCICTL2.bit.RXBKINTENA = 1;//设置波特率9600//2400 | 4800 | 9600 | 19200 | 38400//0x07A0 | 0x03D0 | 0x01E7 | 0x00F3 | 0x0079 SciaRegs.SCIHBAUD = 0x01; SciaRegs.SCILBAUD = 0xE7;//重新使能串行口 SciaRegs.SCICTL1.bit.SWRESET = 1; }//串行...
51单片机 c语言看门狗程序怎么写
看门狗在51单片机电路里的作用是防止程序 “跑飞”、“死机”后,系统不动作,而采取复位的办法“唤醒”系统。
89S51、89S52系列单片机自带有看门狗功能,片内数据区A6H寄存器具有看门狗功能,使用很简单:#include...sfr WDTRST = 0xA6;...void main(){ WDTRST=0x1E;;//初始化看门狗 WDTRST=0xE1;//初始化看门狗for(;;){WDTRST=0x1E;;//喂狗指令WDTRST=0xE1;//喂狗指令}}可见,你只要在程序的大循环体内加一条喂狗指令就行。
但这种看门狗功能有限,不是很可靠的,它依靠晶振工作,一旦晶振不起振,就无效了。
实践中多采用外部看门狗的方法,可以选用的芯片很多:MAX708、MAX813、X25045.....具体编程就要看芯片的参考资料了。
例如:X25045是SPI总线的看门狗芯片,复位端和单片机复位端连接,SPI数据输入你可以选择合适的IO接口。
WREN 0x06 设置写允许位WRDI 0x04 复位写允许位RDSR 0x05 读状态寄存器WRSR 0x01 写状态寄存器READ 0x03/0x0b 读操作时内部EEPROM页地址WRITE 0x02/0x0a 写操作时内部EEPROM页地址#include sbit CS= P2^7; sbit SO= P2^6; sbit SCK= P2^5; sbit SI= P2^4; #define WREN 0x06 // #define WRDI 0x04 // #define RDSR 0x05 // #define WRSR 0x01 // #define READ0 0x03 // #define READ1 0x0b // #define WRITE0 0x02 // #define WRITE1 0x0a // #define uchar unsigned char uchar ReadByte() //read a byte from device { bit bData; uchar ucLoop; uchar ucData; for(ucLoop=0;ucLoop<8;ucLoop++) { SCK=1; SCK=0; bData=SO; ucData<<=1; if(bData) { ucData|=0x01; } } return ucData; } void WriteByte(uchar ucData)//write a byte to device { uchar ucLoop; for(ucLoop=0;ucLoop<8;ucLoop++) { if((ucData&0x80)==0) //the MSB send first {SI=0;} else {SI=1;} SCK=0; SCK=1; ucData<<=1; } } uchar ReadReg() //read register { uchar ucData; CS=0; WriteByte(RDSR); ucData=ReadByte(); CS=1; return ucData; } uchar WriteReg(uchar ucData) //write register { uchar ucTemp; ucTemp=ReadReg(); if((ucTemp&0x01)==1) //the device is busy return 0; CS=0; WriteByte(WREN);//when write the WREN, the cs must have a high level CS=1; CS=0; WriteByte(WRSR); WriteByte(ucData); CS=1; return 1; } void WriteEpm(uchar cData,uchar cAddress,bit bRegion) /* 写入一个字节,cData为写入的数,cAddress为写入地址,bRegion为页 */ { while((ReadReg()&0x01)==1); //the device is busy CS=0; WriteByte(WREN); //when write the wren , the cs must have a high level CS=1; CS=0; if(bRegion==0) { WriteByte(WRITE0);} //write the page addr else {WriteByte(WRITE1);} WriteByte(cAddress); WriteByte(cData); SCK=0; // CS=1; } uchar ReadEpm(uchar cAddress,bit bRegion) /* 读入一个字节,cAddress为读入地址,bRegion为页 */ { uchar cData; while((ReadReg()&0x01)==1);//the device is busy CS=0; if(bRegion==0) {WriteByte(READ0); } else {WriteByte(READ1);} WriteByte(cAddress); cData=ReadByte(); CS=1; return cData; }main(){WriteReg(0x00);//set the watchdog time as 1.4sCS=1;CS=0; //reset the watchdog } 回复: xuzhimin9514所有的89S系列都带狗,所有的80C系列都不带狗。
所以89S51 89S52都带狗,80C51、80C52都不带狗。
怎么计算看门狗的喂狗时间?C语言的程序
对于裸奔的程序,最理想的看门狗是程序只在主循环中加一个喂狗,计算主循环执行一个循环的最长时间的1.5倍作为看门狗定时器的时间,这样只要程序超出了预计的时间未回到主循环,就会自动复位。
这样的程序尽量不要让中断服务函数占用太多的处理器资源,将耗费处理器资源的工作放在程序的主循环中,可以更有效的利用看门狗。
...
使用C语言编程要用什么软件?我是大一学生,在下学期要学C语言...
COBOL(COmmon Business Oriented Language)——是数据处理领域最为广泛的程序设计语言。
COBOL历史 COBOL(COmmon Business Oriented Language)是第一个广泛使用的高级编程语言。
在企业管理中,数值计算并不复杂,但数据处理信息量却很大。
为专门解决经企管理问题,于1959年,由美国的一些计算机用户组织设计了专用于商务处理的计算机语言COBOL,并于1961年美国数据系统语言协会公布。
经不断修改、丰富完善和标准化,已发展为多种版本。
COBOL重视数据项合输入/输出记录的处理,对具有大量数据的文件提供了简单的处理方式。
从名字可以看出,它主要用于解决商业和企业管理等领域的大量数据处理问题,又称为企业管理语言、数据处理语言等。
Cobol语言的研制始于50年代末,当时计算机的生产已进入第二代,计算机应用领域开始从数值计算扩大到数据处理。
商业和企业事务管理中需要进行处理的数据量急剧增加,迫切需要有适用于这个领域的程序设计语言,以提高编制程序的质量和速度。
Cobol语言就是在这种社会背景下应运而生的。
也就是说,Cobol已经年过半百了。
Cobol正式发布于1960年4月,称为Cobol-60。
现在最新的版本应该是Cobol-2002了,而且还在不断改进中,未来的Cobol将支持XML等Web时代的新技术。
换言之,Cobol还将继续......但与C语言或FORTRAN语言相比,COBOL的数值运算、逻辑运算能力比较弱。
1959年,美国国防部召开了一个有政府机关、企业、计算机厂商参加的会议,大家认为有必要设计一种数据处理专用的语言,这就是著名的数据系统语言会议CODASYL(Congference on Data Systems Languages)。
1959年12月出现了第一个COBOL语言文本,并于1960年4月正式发表,因此也被称为COBOL-60。
1968年美国国家标准委员会ANSI又通过了新的标准ANSI COBOL X.3.23-1968。
1972年国际标准化组织ISO将其作为ISO COBOL-72。
1974年ANSI对COBOL-68作出了修订扩充,形成了ANSI COBOL X3.23-1974,随后1978年ISO采用其形成ISO COBOL-78Monday, 2004-09-06ANG="ZH-CN">又提出了ANSI X3.23-85,增加了很多结构化程序设计的内容,ISO标准ISO1989:1985也采用了该标准。
COBOL标准还在不断地改进和完善,最新的标准COBOL 2002主体已经于2002年12月出版,其他部分还在不断地完善之中,具体内容请参考NCITS和COBOLStandards。
COBOL特性 COBOL语言使用了300多个英语保留字,大量采用普通英语词汇和句型,COBOL程序通俗易懂,素有"英语语言"之称。
COBOL语言语法规则严格。
用COBOL语言编写的任一源程序,都要依次按标识部、环境部、数据部和过程部四部分书写,COBOL程序结构的"部"内包含"节","节"内包含"段",段内包含语句,语句由字或字符串组成,整个源程序象一棵由根到干,由干到枝,由枝到叶的树,习惯上称之为树型结构。
目前COBOL语言主要应用于情报检索、商业数据处理等管理领域。
Java擅长使用者接口的设计,而Cobol则是在商业逻辑(business logic)上十分强大。
Cobol被用来开发存货、银行、支付、流通和股票交易系统,可说大部份重要应用都是用Cobol开发的,而且这些都是企业里最最重要的系统 Cobol一直是符合业界标准,像是近年分别取得ANSI以及ISO的标准认证,随着环境的变迁,Cobol也不断增加许多新的功能,其中最大的特色在于我们转变为对象导向(object-oriented)的程序语言,这使得IBM一直持续和Cobol的合作。
早在Java出现以前,Acucorp在公司创立的第一天,就已经可以达到写一次,任何地方都能执行;目前我们可以在600种平台上执行,包括Windows、Linux、J2EE、Novell等。
Cobol现在就是以协助企业开发组件化的应用为目的。
COBOL主要应用在哪些领域 作为一种元老级的高级编程语言,COBOL拥有庞大的用户群和代码,据称用COBOL书写的程序超过了1000亿行( )。
另有调查发现世界上目前使用的商业应用软件之中的百分之七十是用COBOL代码编写的,并且以每年大约五十亿行代码的速度在增长。
看来,历史赋予了COBOL语言特殊的使命。
另外,只要大型机存在,其上就还要运行COBOL程序,而且很多资深的程序员已经习惯于COBOL,加入大型机环境的新程序员(例如我) 也不得不开始使用COBOL。
其实COBOL也有自身的一些优点,比如它对数据的显示格式有较强的控制。
另外,我想最重要的是,即使对于具有相当经验的IT公司来说,重新编写可靠的应用软件也是不实际或是从商业角度上并不可行的,而且还要花上很长的时间。
如上介绍,Cobol主要是应用在商业数据处理领域。
其中占最大百分比的是银行、金融和会计行业,其次是Computer VAR/Retail/Consulting行业,这是美国的调查资料。
Cobol在中国的应用应该也差不多。
(或更少) 常见的COBOL编译器有哪些? 由于COBOL最初是用于主机系统,所以它和主机系统联系得非常紧密。
主流的主机系统,例如IBM的大型机、中型机等都配备了相应的COBOL编译程序,例如VS COBOL II等。
微机的广泛使用...
【c语言程序软件】C语言怎么用啊?!能用它来编应用软件吗?我最...
初学者大多会有你这种疑惑,而且说实话,确实很难在初学的时候让你对这些问题有全面的了解,只能简单地让你这样来理解: 计算机最底层是硬件(电路),然后中间是一些固件(非常底层的程序),再上面是操作系统(本质上是一种很底层的程序),再上面驱动、服务和系统软件(底层程序),再上面是应用程序(高层程序,比如记事本程序等),当然,现在还发展出了基于虚拟机的程序(比如java程序),对这些程序来说,前面提到的应用程序就是中层程序(虚拟机)。
那么在这个层次模型里面,C语言是可以应用在从固件一直到应用程序的所有编程阶段的。
C语言作为一种语言,它本身只是一种表达方法,在不同的编程阶段,都有其具体的应用C语言的“环境和方法”。
比如你现在就处在编写DOS应用程序的阶段,所以你看到的C语言就是在一个DOS窗口里写出一些同样是在DOS窗口里运行的程序出来,而且你看不到用这种方法如何才能写出一个极品飞车游戏。
但是当你按照老师的要求扎扎实实学好语言本身的规则、语法之后,你就有了去了解其他“环境和方法”的资本了,你会发现这种过渡是自然、容易的。
比如要编写一个Windows窗口应用的话,你只是需要一个合适的编译开发环境(比如VC)和调用几个与过去不同的函数而已(如果你语言掌握得非常扎实,则“合适的编译器”或许也是不需要的,不过这已经不是通常的编程方法了,现在还没有办法跟你解释怎样通过TurboC来编写一个Windows窗口程序,但那确实是可能的)。
所以你问“怎么学”,我的建议就是脚踏实地,一步一步,先把眼前的掌握好。
如果你想一步登天,那么结果就是,要么最终也只能写点给外行人看的程序,要么花更多时间回过头来不基础。
C语言编程软件
我改怎么说呢 去年考c语言的时候 我也找了好久的编程软件 几乎网上翻遍了软件下载 调试 visual c++ 6.0 也试过 当是也是 很简单的调试都提示错误 其实现在你用那个都可以 考试的时候很简单就可以熟悉软件 而且考试的时候 老师也会告诉你改怎么办 完全不用担心软件的问题 但是平时练习就需要好点的软件了 http://nj.onlinedown.net/soft/42127.htm#downloadC/C++程序设计学习与实验系统 这个是我经常用的 现在考三级上机也在用这个软件来调试程序 如果相信我 以后有时间有什么问题可以问我 qq我实在不想公布在这里了 原来百度的时候 公布了qq 结果至少有50多个叫我qq 呵呵...
C语言编程软件下载大学一年级C语言编程课,可以使用的软件哪里下...
1. 做为一门大学课程,获得学分可以毕业。
2. 其它语言,如c++基础。
3. 编程常用语言,开发软件基础。
可以编写软件,不过现如今JAVA与C++等地位已经逐步取代C语言了。
1. 很多专业的基础课程都有c语言,这就意味着学的好,可以取得好成绩获得更高的绩点。
大学里面,绩点不仅是奖学金考量的基本要素,也是保研的重要参考要素。
2. 像C++这样子的语言,比单纯的C语言多了类和继承,基本的知识是一样的。
也就是说,C语言写的好,这类语言学起来就很容易。
3. 软件开发,代码是很重要的一部分。
一些很基础的算法,都是可以说核心部分了。
我想同雷丢嗨呀