虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

Keil.uVision.<b>V3</b>.0原版光盘

  • keil使用笔记

    keil 使用笔记:在Memory窗口上输入address_type:address才能看到正确地址的变量debug~perfermance analyzer加入要察看的模块名称,然后view~perfermance analyzer window 可以察看各个模块运行时间①Display address_type:address B:Bit address C:Code Memory Bx:Code Bank D D:80H 命令可以查看特殊寄存器 data D I:0 命令可以查看内部RAM数据iData; D X:0 命令可以查看外部RAM数据xData; ②R1 //显示R1 register ~R1 //显示变量R1 R1 = R7 //对寄存器Rx操作R1 = --R7 R1 = 0x20 ③main //显示main()的开始地址d main //显示main()的代码④向RAM.ROM中写数据Enter data_type address_type:address expr,expr.... data_type:int char double float long E char data:0x20 1,2,3,4 //向data区0x20开始的地址写1,2,3,4 变量放在RAM的30H,要把定义放在main前面!另外特别注意,内部RAM通常供C程序存放中间变量等,所以一定要看看编译后的程序中是否存在存储单元冲突的情况,比如如果程序中 使用了别的寄存器组的话,08-1FH单元就不能用了unsigned long data i _at_ 0x30

    标签: keil 使用笔记

    上传时间: 2013-11-05

    上传用户:dongqiangqiang

  • 串行编程器源程序(Keil C语言)

    串行编程器源程序(Keil C语言)//FID=01:AT89C2051系列编程器//实现编程的读,写,擦等细节//AT89C2051的特殊处:给XTAL一个脉冲,地址计数加1;P1的引脚排列与AT89C51相反,需要用函数转换#include <e51pro.h> #define C2051_P3_7 P1_0#define C2051_P1 P0//注意引脚排列相反#define C2051_P3_0  P1_1#define C2051_P3_1 P1_2#define C2051_XTAL P1_4#define C2051_P3_2 P1_5#define C2051_P3_3 P1_6#define C2051_P3_4 P1_7#define C2051_P3_5 P3_5 void InitPro01()//编程前的准备工作{ SetVpp0V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=0; Delay_ms(20); nAddress=0x0000; SetVpp5V();} void ProOver01()//编程结束后的工作,设置合适的引脚电平{ SetVpp5V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=1;} BYTE GetData()//从P0口获得数据{ B_0=P0_7; B_1=P0_6; B_2=P0_5; B_3=P0_4; B_4=P0_3; B_5=P0_2; B_6=P0_1; B_7=P0_0; return B;} void SetData(BYTE DataByte)//转换并设置P0口的数据{ B=DataByte; P0_0=B_7; P0_1=B_6; P0_2=B_5; P0_3=B_4; P0_4=B_3; P0_5=B_2; P0_6=B_1; P0_7=B_0;} void ReadSign01()//读特征字{ InitPro01(); Delay_ms(1);//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(20); ComBuf[2]=GetData(); C2051_XTAL=1; C2051_XTAL=0; Delay_us(20); ComBuf[3]=GetData(); ComBuf[4]=0xff;//----------------------------------------------------------------------------- ProOver01();} void Erase01()//擦除器件{ InitPro01();//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 C2051_P3_3=1; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(1); SetVpp12V(); Delay_ms(1); C2051_P3_2=0; Delay_ms(10); C2051_P3_2=1; Delay_ms(1);//----------------------------------------------------------------------------- ProOver01();} BOOL Write01(BYTE Data)//写器件{//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 //写一个单元 C2051_P3_3=0; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; SetData(Data); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); Delay_us(20); C2051_P3_4=0; Delay_ms(2); nTimeOut=0; P0=0xff; nTimeOut=0; while(!GetData()==Data)//效验:循环读,直到读出与写入的数相同 {  nTimeOut++;  if(nTimeOut>1000)//超时了  {   return 0;  } } C2051_XTAL=1; C2051_XTAL=0;//一个脉冲指向下一个单元//----------------------------------------------------------------------------- return 1;} BYTE Read01()//读器件{ BYTE Data;//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 //读一个单元 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=1; C2051_P3_7=1; Data=GetData(); C2051_XTAL=1; C2051_XTAL=0;//一个脉冲指向下一个单元//----------------------------------------------------------------------------- return Data;} void Lock01()//写锁定位{ InitPro01();//先设置成编程状态//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 if(ComBuf[2]>=1)//ComBuf[2]为锁定位 {  C2051_P3_3=1;  C2051_P3_4=1;  C2051_P3_5=1;  C2051_P3_7=1;  Delay_us(20);  SetVpp12V();  Delay_us(20);  C2051_P3_2=0;  Delay_us(20);  C2051_P3_2=1;  Delay_us(20);  SetVpp5V(); } if(ComBuf[2]>=2) {  C2051_P3_3=1;  C2051_P3_4=1;  C2051_P3_5=0;  C2051_P3_7=0;  Delay_us(20);  SetVpp12V();  Delay_us(20);  C2051_P3_2=0;  Delay_us(20);  C2051_P3_2=1;  Delay_us(20);  SetVpp5V(); }//----------------------------------------------------------------------------- ProOver01();} void PreparePro01()//设置pw中的函数指针,让主程序可以调用上面的函数{ pw.fpInitPro=InitPro01; pw.fpReadSign=ReadSign01; pw.fpErase=Erase01; pw.fpWrite=Write01; pw.fpRead=Read01; pw.fpLock=Lock01; pw.fpProOver=ProOver01;}

    标签: Keil 串行 C语言 编程器

    上传时间: 2013-11-12

    上传用户:gut1234567

  • 98年全国大学生数学建模竞赛B题“水灾巡视问题”

    98年全国大学生数学建模竞赛B题“水灾巡视问题”,是一个推销员问题,本题有53个点,所有可能性大约为exp(53),目前没有好方法求出精确解,既然求不出精确解,我们使用模拟退火法求出一个较优解,将所有结点编号为1到53,1到53的排列就是系统的结构,结构的变化规则是:从1到53的排列中随机选取一个子排列,将其反转或将其移至另一处,能量E自然是路径总长度。具体算法描述如下:步1: 设定初始温度T,给定一个初始的巡视路线。步2 :步3 --8循环K次步3:步 4--7循环M次步4:随机选择路线的一段步5:随机确定将选定的路线反转或移动,即两种调整方式:反转、移动。步6:计算代价D,即调整前后的总路程的长度之差步7:按照如下规则确定是否做调整:如果D0,则按照EXP(-D/T)的概率进行调整步8:T*0.9-->T,降温

    标签: 大学生 数学建模 巡视 竞赛

    上传时间: 2015-03-14

    上传用户:himbly

  • 使用的是API编程,可格式化、校验和读写特殊扇区。可用作Windows下的磁盘加密。本函数还有以下两个缺点以待改进: 1.本函数还只能读能读 A: 和 B:,即只能对软盘操作 2.不能改变磁盘扇区大小

    使用的是API编程,可格式化、校验和读写特殊扇区。可用作Windows下的磁盘加密。本函数还有以下两个缺点以待改进: 1.本函数还只能读能读 A: 和 B:,即只能对软盘操作 2.不能改变磁盘扇区大小,只能是标准的 512 个字节。 参数说明: command 操作: 0 重置磁盘 2 读扇区 3 写扇区 4 校验磁道 5 格式化磁道 8 得到设备参数 (int 1EH) drive 驱动器 A:=0 B:=1 head 磁头号,范围 0 - 1 track 磁道号,范围 0 - 84 ( 80 - 84 为特殊磁道,通常用来加密 ) sector 扇区号,范围 0 - 255 ( 19 - 255 为非标准扇区编号,通常用来加密) nsectors 每次读或写的扇区数,不能超出每磁道的最大扇区数 buffer 数据写入或读出的缓冲区,大小为 512 个字节 返回值 ( 同 Int 13H ): 0x0 成功 0x1 无效的命令 0x3 磁盘被写保护 0x4 扇区没有找到 0xa 发现坏扇区 0x80 磁盘没有准备好

    标签: Windows API 函数 磁盘

    上传时间: 2013-12-05

    上传用户:moerwang

  • matlab解线性方程组的源代码 function x=nagauss2(a,b,flag) % 用途:选列主元Gauss消去法解线性方程组ax=b % 格式:x=nagauss2(a,b,fl

    matlab解线性方程组的源代码 function x=nagauss2(a,b,flag) % 用途:选列主元Gauss消去法解线性方程组ax=b % 格式:x=nagauss2(a,b,flag) a为系数矩阵,b为右端列向量,flag若为0,则显示中间过程

    标签: nagauss function matlab Gauss

    上传时间: 2013-12-22

    上传用户:exxxds

  • 【问题描述】已知线性方程组AX=B

    【问题描述】已知线性方程组AX=B,求解该方程组。参考算法: 消去法:将列向量B加到矩阵A的最后一列,构成增广矩阵AB。对AB进行下列三种初等变换,使原矩阵A的部分的主对角线上的元素均为1,其余元素均为0,则原列向量B的部分即为X的值: 1. 将矩阵的一行乘以一个不为0的数 2. 将矩阵的一行加上另一行的倍数 3. 交换矩阵中两行的位置

    标签: AX 线性 方程

    上传时间: 2015-06-18

    上传用户:stvnash

  • 车牌定位---VC++源代码程序 1.24位真彩色->256色灰度图。 2.预处理:中值滤波。 3.二值化:用一个初始阈值T对图像A进行二值化得到二值化图像B。 初始阈值T的

    车牌定位---VC++源代码程序 1.24位真彩色->256色灰度图。 2.预处理:中值滤波。 3.二值化:用一个初始阈值T对图像A进行二值化得到二值化图像B。 初始阈值T的确定方法是:选择阈值T=Gmax-(Gmax-Gmin)/3,Gmax和Gmin分别是最高、最低灰度值。 该阈值对不同牌照有一定的适应性,能够保证背景基本被置为0,以突出牌照区域。 4.削弱背景干扰。对图像B做简单的相邻像素灰度值相减,得到新的图像G,即Gi,j=|Pi,j-Pi,j-1|i=0,1,…,439 j=0,1,…,639Gi,0=Pi,0,左边缘直接赋值,不会影响整体效果。 5.用自定义模板进行中值滤波 区域灰度基本被赋值为0。考虑到文字是由许多短竖线组成,而背景噪声有一大部分是孤立噪声,用模板(1,1,1,1,1)T对G进行中值滤波,能够得到除掉了大部分干扰的图像C。 6.牌照搜索:利用水平投影法检测车牌水平位置,利用垂直投影法检测车牌垂直位置。 7.区域裁剪,截取车牌图像。

    标签: 1.24 256 图像 阈值

    上传时间: 2013-11-26

    上传用户:懒龙1988

  • 1.24位真彩色->256色灰度图。 2.预处理:中值滤波。 3.二值化:用一个初始阈值T对图像A进行二值化得到二值化图像B。 初始阈值T的确定方法是:选择阈值T=Gmax-(Gmax-G

    1.24位真彩色->256色灰度图。 2.预处理:中值滤波。 3.二值化:用一个初始阈值T对图像A进行二值化得到二值化图像B。 初始阈值T的确定方法是:选择阈值T=Gmax-(Gmax-Gmin)/3,Gmax和Gmin分别是最高、最低灰度值。 该阈值对不同牌照有一定的适应性,能够保证背景基本被置为0,以突出牌照区域。 4.削弱背景干扰。对图像B做简单的相邻像素灰度值相减,得到新的图像G,即Gi,j=|Pi,j-Pi,j-1|i=0,1,…,439 j=0,1,…,639Gi,0=Pi,0,左边缘直接赋值,不会影响整体效果。 5.用自定义模板进行中值滤波 区域灰度基本被赋值为0。考虑到文字是由许多短竖线组成,而背景噪声有一大部分是孤立噪声,用模板(1,1,1,1,1)T对G进行中值滤波,能够得到除掉了大部分干扰的图像C。 6.牌照搜索:利用水平投影法检测车牌水平位置,利用垂直投影法检测车牌垂直位置。 7.区域裁剪,截取车牌图像。

    标签: Gmax-G 1.24 Gmax 阈值

    上传时间: 2014-01-08

    上传用户:songrui

  • 回溯(b a c k t r a c k i n g)是一种系统地搜索问题解答的方法。为了实现回溯

    回溯(b a c k t r a c k i n g)是一种系统地搜索问题解答的方法。为了实现回溯,首先需要为问题定义一个解空间( solution space),这个空间必须至少包含问题的一个解(可能是最优的)。在迷宫老鼠问题中,我们可以定义一个包含从入口到出口的所有路径的解空间;在具有n 个对象的0 / 1背包问题中(见1 . 4节和2 . 2节),解空间的一个合理选择是2n 个长度为n 的0 / 1向量的集合,这个集合表示了将0或1分配给x的所有可能方法。当n= 3时,解空间为{ ( 0 , 0 , 0 ),( 0 , 1 , 0 ),( 0 , 0 , 1 ),( 1 , 0 , 0 ),( 0 , 1 , 1 ),( 1 , 0 , 1 ),( 1 , 1 , 0 ),( 1 , 1 , 1 ) }。

    标签: 搜索

    上传时间: 2014-01-17

    上传用户:jhksyghr

  • 考察例1 4 - 8中的1 4个点。A中的最近点对为(b,h)

    考察例1 4 - 8中的1 4个点。A中的最近点对为(b,h),其距离约为0 . 3 1 6。B中最近点对为 (f, j),其距离为0 . 3,因此= 0 . 3。当考察 是否存在第三类点时,除d, g, i, l, m 以外 的点均被淘汰,因为它们距分割线x= 1的 距离≥ 。RA ={d, i, m},RB= {g, l},由 于d 和m 的比较区中没有点,只需考察i 即可。i 的比较区中仅含点l。计算i 和l 的距离,发现它小于,因此(i, l) 是最近

    标签:

    上传时间: 2013-12-03

    上传用户:66666