51单片机

STC单片机Flash做EEPROM的代码

倾然丶 夕夏残阳落幕 提交于 2019-12-05 12:37:56
STC官方给出的建议: 1 /***************************************************************Author:Liming*** 2 * @brief 读取参数 3 * @param None 4 * @retval None 5 ****************************************************************0x49E7FC7B*****/ 6 void ReadParam(void) 7 { 8 uint8_t i; 9 uint8_t buffer[64][8];//1扇区分为64块存储区 1块内的8个字节 10 11 EepromReadBytes(IAP_SECTOR0, &buffer[0][0], 0x200); 12 13 #ifdef DEBUG 14 for(i=0; i<64; i++)//调试模式输出数据 15 { 16 SendBytes(&buffer[i][0], 8); 17 SendString("\r\n"); 18 Delay(25); 19 } 20 #endif 21 22 for(i=0; i<64; i++) 23 { 24 if((buffer[i][0] == 0xff) && buffer[i][1] != 0xff) 25

基于51单片机的温度采集系统

匿名 (未验证) 提交于 2019-12-03 00:22:01
前面,笔者介绍了如何制作一个小空间的温度湿度检测系统,这一次,笔者给大家介绍一下一个温度湿度收集装置的制作。 下面是一张原理图: 源代码如下: #include <reg52.h> #define uint unsigned int #define uchar unsigned char #include <intrins.h> typedef bit BOOL ; sbit io = P1^ 1 ; //(口线定义) sbit bee=P1^ 0 ; sbit rs = P2^ 5 ; sbit rw = P2^ 6 ; sbit ep = P2^ 7 ; bit flag_300ms ; sbit K1=P1^ 2 ; sbit K2=P1^ 3 ; sbit K3=P1^ 4 ; uchar yemian= 0 ; //(定义变量) uchar flat= 1 ; uchar data_byte; uchar RH,RL,TH,TL; uchar WenDu,ShiDu; //报警的温度和湿度 #include "eeprom52.h" /****************************延时程序****************************/ void delay(uchar ms) { // 延时子程序 uchar i ; while (ms--) {

基于51单片机的点阵贪吃蛇

匿名 (未验证) 提交于 2019-12-02 23:43:01
程序如下: #include <reg52.h> #include <intrins.h> #include <stdlib.h> #define SNAKE 20 unsigned char x[SNAKE]; //存放蛇的X轴坐标 unsigned char y[SNAKE]; //存放蛇的Y轴坐标 unsigned char point_x; //存放果实的X轴坐标 unsigned char point_y; //存放果实的Y轴坐标 /* //点阵模块接口定义 sbit LEDARRAY_LAT = P3^6;//储存寄存器是时钟 sbit LEDARRAY_CLK = P3^5;//移位寄存器时钟输入端 sbit LEDARRAY_DI = P3^4;//串行数据输入端 sbit up = P3^0; sbit down = P3^1; sbit left = P3^2; sbit right = P3^3; unsigned char num[8][8]={ 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0 };//定义8*8数组作为清屏数据(有点走弯路

单片机成长之路(51基础篇) - 026 基于stm89c52之单片机看门狗

早过忘川 提交于 2019-12-01 17:09:50
基于stc89c52的看门狗,代码如下: main.c 1 #include "stc89c5x_Quick_configuration.h"    // 自定义头文件 2 #include "data.h" 3 #include "bsp_gpio.h" 4 #include "bsp_wdt.h" 5 6 void init_OS_Time(void){ 7 DATA.Time.Time_Interrupt = 1; // 设置步长 8 DATA.Time.Interrupt_count = 0; // 设置单位步数 9 DATA.Time.Time_s = 0; // 时间 s 10 DATA.Time.Time_h = 0; // 时间 h 11 DATA.Time.Time_day = 0; // 时间 日 12 DATA.Time.Time_month = 0; // 时间 月 13 DATA.Time.Time_year = 0; // 时间 年 14 } 15 16 void main(void){ 17 init_OS_Time(); 18 init_WDT(); 19 while(1){ 20 ; 21 } 22 } bsp_wdt.h 1 #ifndef __BSP_WDT_H_ 2 #define __BSP_WDT_H_ 3 4 /*-----------

单片机期末复习

安稳与你 提交于 2019-11-28 23:34:57
一、硬件结构 1.1部分引脚说明 RST:复位引脚,两个机器周期的高电平后复位 ALE:锁存低八位地址 EA:高电平时,访问内部程序存储器(ROM) P0:双向IO口、分时复用-低八位地址,数据总线 P1:双向IO口 P2:双向IO口,访问外部存储器时,提供高八位地址总线 P3:双向IO口,有第二功能 1.2存储器 物理上分为:4 个空间 即片内ROM、 、 片外ROM(程序存储器) 片内RAM、 、 片外RAM(数据存储器) 逻辑上分为: : 3 个空间 , 程序内存(ROM) ( 片内 、 外 ) 统一编址 MOVC 数据存储器 ( 片内) ) MOV 数据存储器(片外) MOVX 1.2.1程序存储器(ROM 作用:存储用户程序和表格常数 特殊单元: 0000H:复位后从这里开始执行程序 中断单元: 外中断0 (INT0 ) 0003H 定时器0 (T0 ) 000BH 外中断1 (INT1 ) 0013H 定时器1 (T1 ) 001BH 串行口(UART ) 0023H 1.2.2内部数据存储器(RAM 通用工作寄存器组 00~1FH共32个,四组通用寄存器,即(四组R0~R7) 可以使用RS1(PSW.4)RS0(PSW.3)来切换寄存器区 RS1 RS0 寄存器区 内存地址 00 0区 00-07H 01 1区 08-0FH 10 2区 10-17H 11 3区 18

51单片机中断

拈花ヽ惹草 提交于 2019-11-26 14:34:30
普中51 单片机中断 51 单片机一定有的5 个中断,序号为各自的中断号,按优先级从高到低排序依次为: 0----INT0:外部中断0;1---T0:定时/计数器0;2---INT1:外部中断1;3---T1:定时/计数器1;4---RXD 和TXD:串行口中断 IE寄存器: 控制中断,IE寄存器有8位,IE={EX0,ET0,EX1,ET1,ES, , ,EA},其中每一位分别控制: EX0---INT0(外部中断0);ET0---T0(定时/计数器T0);EX1---INT1(外部中断1);ET1---T1(定时/计数器T1); ES---RXD\TXD(串行口中断);空;空;EA---总开关(当EA置1时,其他的才有效) TCON寄存器: 控制中断方式以及中断标志位,TCON={IT0,IE0,IT1,IE1,TR0,TF0,TR1,TF1},其中每一位分别表示: IT0---IT0=0 时为电平触发,IT0=1 时为下降沿触发(一般选用1);eg:IT1同理 IE0---INT0(外部中断0)中断标志;eg:IE1同理 TR0---定时/计数器T0控制;eg:TR0同理 TF0----定时/计数器T0溢出中断标志;eg:TF1同理 INT0和INT1外部中断: 工作原理: 出现中断信号时,中断标志置1,CPU 执行中断函数。 外部中断配置: INT0对应P3.2