N76e003单片机内部没有EEPROM,但是可以使用 APROM模拟EEPROM功能,代码如下: eeprom.h #ifndef _EEPROM_H_ #define _EEPROM_H_ //EEPROM 指令 #define BYTE_PROGRAM_AP 0x21 //APROM 字节编程(数据写入) #define PAGE_ERASE_AP 0x22 //APROM 页擦除 (128字节) #define BYTE_Read_AP 0x00 //APROM 字节读 (数据字节) /…
N76e003切换到外部时钟的资料很少(因为N76e003的片子是不支持无源晶振的,有源晶振的成本又很高,所以网上很少有对N76e003的介绍).有图有真相: 代码如下: main.c #include <N76E003.H> #include <SFR_Macro.h> #include <Function_Define.h> bit BIT_TMP; // 调用 SFR_Macro.h 使用的 void main(void){ // 开通外部 set_EXTEN1;…
本文是续 单片机成长之路(51基础篇) - 009 关于sdcc的多文件编译范例(一)编写的. 在实际的工作中,单片机的头文件和功能函数不可能同全部放在同一个文件夹下面,我们把单片机成长之路(51基础篇) - 009 关于sdcc的多文件编译范例的代码进行重新拆分,然后把头文件归类到一个文件夹(include/)下面,便于管理. 拆分前文件目录结构: ├── delay.c ├── delay.h ├── main.c └── makefile 拆分侯生成以下文件: ├── include //…
本文是续 单片机成长之路(51基础篇) - 006 在Linux下搭建51单片机的开发烧写环境编写的. 本范例主要由(main.c ,delay.h,delay.c,makefile)4个文件组成,sdcc的编译环境搭建参照:单片机成长之路(51基础篇) - 006 在Linux下搭建51单片机的开发烧写环境,废话不多,进入主题: main.c(主函数) #include "8051.h" #include "delay.h" #define uint unsign…
一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程-->错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个人写代码的风格不同,这些不同的风格就代表了不同的流派 如果把Python的基本语法比作武术的基本功那么不同的编程风格就好比不同的武林门派 虽然大家风格不同,但是都可以完成你的编程需求,Python是一门面向对象的编程语言,但是到目前为止,你从未接触面向对象编程,然而你已经可以解决很多问题了,在Python…
Sass 学习Sass之前,应该要知道css预处理器这个东西,css预处理器是什么呢? Css预处理器定义了一种新的语言将Css作为目标生成文件,然后开发者就只要使用这种语言进行编码工作了.预处理器通常可以实现浏览器兼容,变量,结构体等功能,代码更加简洁易于维护. 那么css预处理器与Sass有什么关系呢,Sass就是属于css预处理器中的一种,还有两款他们分别是Less和 Stylus,这里就不做过多的介绍了. 什么是Sass sass是一种css的开发工具,提供了很多便利的写法,不但使css…
目录: 函数 为什么要使用函数 什么是函数 函数的返回值 文档化函数 函数传参数 文件操作(二) 1.文件操作的步骤 2.文件的内置方法 函数: 一.为什么要使用函数 在日常写代码中,我们会发现有很多代码是重复利用的,这样会使我们的代码变得异常臃肿,比如说: 我们要写一个验证码的功能 例子: 比如说我们要进行一些操作,而这些操作需要填写验证码 验证码代码: import random number_check = '' for i in range(0,6): number_curr = ran…
今天开始我将开启C++自学成长之路,今天是第一天,在以前就一直在网上查找关于c++的资料,想买一本好一点的,权威一点的资料书,通过努力查找,我选择了c++ primer,在网上这本书的好评如潮.更多的人认为这本书比c++ primer plus 更好一点. 我是本科在校大一的学生,学的是软件工程.目前学校只教了C语言,且现在C语言已经快学完了,我想学习c++! 先说说为什么想自学c++吧.其实这原因还特多的.我感觉我们C语言教材比较简单,当然我也没有说我C语言学的很好,我也没有说我很牛逼,我只是…
前端时间要用按键,搞了个状态机(如图): main.c #include <N76E003.H> #include <SFR_Macro.h> //N76E003 SFR寄存器设置宏定义 #include <Function_define.h> //功能定义 #include "data.h" #include "interrupt.h" #include "button.h" /*--------------…
标准 C 语言定义了 32 个关键字,如下表(ANSI C的32个关键字): C51在此基础上针对单片机功能进行了扩展,详情见下表(C51编译器扩充关键字): C 51的数据类型 51单片机使用的C语言的存储器类型分为以下几种:…
在Linux下没有像keli那样好用的IDE来开发51单片机,开发环境只能自己搭建了. 第一步:安装交叉编译工具 a) 安装SDCC sudo apt-get install sdcc b)测试SDCC是否可用,这是个网上找的简单的流水灯代码 test.c, 用来测试 #include "8051.h" #define uint unsigned int #define uchar unsigned char uchar tab[] = {0x01,0x02,0x04,0x08,0x1…
STC单片机简介 STC单片机是一款增强型51单片机,完全兼容MCS-51,还增加了新的功能,比如新增两级中断优先级,多一个外中断,内置EEPROM,硬件看门狗,具有掉电模式,512B内存等.还支持ISP下载,不用编程器,只要一个MAX232和一些廉价的元件就能写程序,可擦写10万次.因此是一款很好用的单片机. stc单片机的优缺点 stc单片机优点: 1.抗干扰能力强: 2.保密性能强悍,很难被破解: 3.单片机时钟有防外部电磁辐射功能: stc单片机缺点: 1.功耗较高,5V供电: 2.8位…
从数据存储类型来说,8051系列有片内.片外程序存储器,片内.片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code.data.xdata.idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率(此问题将在后面专门讲述).与ANSI-C稍有不同,它只分SAMLL.COMPACT.LARGE模式,各种不同的模式对应不同的实际硬件系统,也将有不同的编译结果. 在51系…
最近又看了一下关于stc单片机的知识,感觉在使用中EEPROM是个经常用到的东西,特地学习了一下,给大家分享一下心得,如有不足,多多包涵,废话不多说,一图解千言,先上图: /*--------------------------------------------------------------分界线-----------------------------------------------------------------------------------*/ main_eeppro…
比较全的CH340,CH341应用说明 CH340 以前用USB转串口时图方便一般也都是直接买现成的USB转串口模块,但是后面设计需要,不等不将CH340这个模块集成到电路板中,经过多次失败,终于得到稳定的工作电路了,以下是CH340的说明. 特点 1.全速USB设备接口,兼容USB V2.0,外围元器件只需要晶体和电容. 2.仿真标准串口,用于升级原串口外围设备,或者通过USB增加额外串口. 3.计算机端Windows操作系统下的串口应用程序完全兼容,无需修改 4.硬件全双工串口,内置收发缓冲…
用户应用程序在运行过程中,有时会有特殊需求,需要实现单片机系统复位(热启动之一),传统的8051单片机由于硬件上未支持此功能,用户必须用软件模拟实现,实现起来较麻烦.STC单片机增加了相应的硬件功能,内部的ISP/IAP控制寄存器ISP_CONTR便可以实现此功能.用户只需简单的控制ISP_CONTR特殊功能寄存器的其中两位SWBS和SWRST就可以实现系统复位. ISP/IAP控制寄存器(ISP_CONTR) STC单片机ISP/IAP控制寄存器在特殊功能寄存器中的字节地址为E7H,不能位寻址…
基于stc89c52的看门狗,代码如下: main.c #include "stc89c5x_Quick_configuration.h" // 自定义头文件 #include "data.h" #include "bsp_gpio.h" #include "bsp_wdt.h" void init_OS_Time(void){ DATA.Time.Time_Interrupt = ; // 设置步长 DATA.Time.In…
T2CON:定时器控制寄存器 寄存器地址0C8H,位寻址0C8H-0CFH. 位地址 CF CE CD CC CB CA C9 C8 位符号 TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2 TF2:T2溢出标记 当T2溢出时TF2=1,TD2只能用软件清除 当RCLK=1或TCLK=1时,TF2将不置位 EXF2:T2外部标记 当EXEN2=1时,T2EX/P1.1引脚上的负跳变引起T2的捕捉/重装操作,此时EXF2=1.在T2中断允许时,EXF2=1将引起中断…
TMOD:工作方式控制寄存器 寄存器地址89H,不可位寻址. 位序 B7 B6 B5 B4 B3 B2 B1 B0 位符号 GATE C/T M1 M0 GATE C/T M1 M0 GATE——门控位 当=0时,以TR0(或TR1)状态决定定时器/计数器的启动或禁止 当=1时,以TR0与INT0(或TR1与INT1)状态决定定时器/计数器的启动或禁止    C/T=0 定时/计数工作方式选择位   0为定时器  1为计数器.  M1M0——工作方式选择位 M1M0= 方式0:是13位计数结构的…
ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码, 而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程.IAP(In-Application Programming) 指MCU可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序.ISP和IAP技术是未来仪器仪表的发展方向. 1   ISP和IAP的工作原理 ISP的实现相对要简单一些,一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写.对于单…
BOOT区的由来基于一个简单的道理,即单片机的程序是保存在FLASH中的,要运行程序就必须不停的访问FLASH存储器.对于一般的FLASH存储器,数据的写入需要一定的时间来完成,在数据写入完成之前,存储器中所有的数据都是不可读的,这就在运行旧程序和写入新程序之间造成了一个矛盾. 使用BOOT区是解决这个矛盾的方法之一,它将FLASH存储器从物理上分为两个独立的区域,对其中的一个区的数据写入不会影响到另一个区的数据读取操作.我们可以让单片机的程序在其中一个区(通常是BOOT区)运行,而运行着的程序…
stm8 时钟切换; /************************************ 时钟设置 ************************************/ // 时钟 0:内部高速 1:内部低速 2:外部 3:保留 void set_System_clock(char clock_mode){ // set CPUDIV CLK_CKDIVR &= 0xf8;CLK_CKDIVR |= 0x00; // 设置 CPUDIV 不分频 switch(clock_mode)…
阅读目录 简介 1 什么是数据? x=10,10是我们要存储的数据 2 为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3 数据类型 数字(整形,长整形,浮点型,复数) 字符串 列表 元组 字典 集合 4 如何学习 #一:基本使用 1 用途 2 定义方式 3 常用操作+内置的方法 #二:该类型总结 1 存一个值or存多个值 只能存一个值 可以存多个值,值都可以是什么类型 2 有序or无序 3 可变or不可变 !!!可变:值变,id不变.可变==不可hash…
打个广告欢迎加入linux,python资源分享群群号:478616847 目录: 1.作用域 2.递归 3.模块介绍 4.内置模块-OS 5.内置模块-ConfigParser 6.内置模块-hashlib 7.with文件操作 代码执行环境默认为3.5.1 一.作用域 (1)什么是作用域,官方来说作用域就是就是有不同的命名空间,就像下面的代码一样,a=1它的作用域是全局的,也在全局的命名空间当中,当函数 action中的a=2它就在局部的作用域中,也在局部的命名空间当中,运行一下下面的代码!…
)或>>> name = )    #按照占位符的顺序):]        #下标识从0开始的 wulaoer >>> print name[:]        #最后一个不显示wu>>> print name[-]        #最后一个r>>> print name[:-]        #从最后一个开始 wulaoe >>> print name[:-]        #左边显示右边不显示 wu >&g…
CSS篇: 1.CSS权重: 不重复造轮子啦,直接传送门(CSS选择器的权重与优先规则) JavaScript篇: 1.this关键字: 它是一种引用(referent).指向的是当前上下文(context,下文中将会对此作专门的解释)的主体(subject),或者当前正在被执行的代码块的主体. (我看到一个文章说作为函数调用时指向全局,作为方法调用时指向方法所在的对象,理解本身是没问题的,只是相对于上面的理解过于冗余了.可以这么理解,作为函数调用时,此时函数不就是全局对象(window)的一个…
本文总结了Arduino常用串口操作函数,函数说明部分来源于Arduino 官网串口使用指南,示例与实验部分为自编.本文是对Arduino串口操作函数的较全面总结,可作为工具贴查找使用. 函数:if(Serial) 描述: 指示指定的串行端口是否已就绪. 在32u4基础板,if(Serial)指示USB CDC串行连接状态是否打开.对于所有其它情况下,如果在Leonardo板上始终返回true(真). 这是介绍Arduino 1.0.1. 语法: 所有板子:if(Serial) 如果是Ardui…
本文由博主原创,如有不对之处请指明,转载请说明出处. /********************************* 代码功能:输出模拟信号,控制RGB灯的颜色 使用函数: pinMode(引脚号,模式); analogWrite(引脚号,电压参数); //输出模拟电压 = 5/256*电压参数 constrain(输入参数,区间下界,区间上界); //区间函数 random(随机种子); //产生一个随机数 具体函数用法请参考博主的另一篇文档:<arduino api基础手册> 创作时…
为什么写这一篇 问题一:jdbc连接数据库返回的对象是ResultSet,如何把ResultSet对象中的值转换为我们自建的各种实体类? 我估计,80%的程序员会写jdbc数据库连接,但开发项目依然用spring.hibernate. mybatis等开源框架封装的数据库连接. 在你能写一套足够好的数据库连接池进行数据库增删改查的时候,我并不认为开源框架会比你写的数据库连接效率快多少.那大部分人为什么没有用自己写的数据库连接池? “拿来主义”,确实让我们的工作轻松了很多. 当我们被简单的“拿来主…
一.套接字 1.1.套接字套接字最初是为同一主机上的应用程序所创建,使得主机上运行的一个程序(又名一个进程)与另一个运行的程序进行通信.这就是所谓的进程间通信(Inter Process Communication,IPC).有两种类型的套接字:基于文件的和面向网络的. 第一种:基于文件的 因为两个进程运行在同一台计算机上,所以这些套接字都是基于文件的,这意味着文件系统支持他们的底层基础结构.这是能够说的通的,因为文件系统是一个运行在同一个主机上的多个进程之间的共享常量.第二种:基于网络的 基于…