-
-
0
-
204串口1切换 #include "reg52.h" sfr P_SW1 = 0xa2; void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; P_SW1 = 0x00; //RXD/P3.0, TXD/P3.1 // P_SW1 = 0x40; //RXD_2/P3.6, TXD_2/P3.7 // P_SW1 = 0x80; //RXD_3/P1.6, TXD_3/P1.7 // P_SW1 = 0xc0; //RXD_4/P4.3, TXD_4/P4.4 while (1); } 串口2切换 P_SW2 = 0x00; //RXD2/P1.0, TXD2/P1.1 串口3切换 P_SW2 = 0x00; //RXD3/P0.0, TXD3/P0.1 串口4切换 P_SW2 = 0x00; //RXD4/P0.2, TXD4/P0.3 SPI切换 #include "reg52.h" voi56012#include "reg51.h" #include "intrins.h" sfr P_SW2 = 0xba; sfr PWMSET = 0xF1; sfr PWMCFG01 = 0xF6; #define PWM0CH (*(unsigned char volatile xdata *)0xFF00) #define PWM0CL (*(unsigned char volatile xdata *)0xFF01) #define PWM0CKS (*(unsigned char volatile xdata *)0xFF02) sfr P0M1 = 0x93; sfr P0M0 = 0x94; sfr P1M1 = 0x91; sfr P1M0 = 0x92; sfr P2M1 = 0x95; sfr P2M0 = 0x96; sfr P3M1 = 0xb1; sfr P3M0 = 0xb2; sfr P4M1 = 0xb3; sfr P4M0 = 0xb4; sfr P5M1 = 0xc9; sfr P5M0 = 0xca; sbit PWM1 = P3^5; sbit PWM2 = P3^7; sbit P10 = P1^0; sbit P11 = P1^1; void PWM0_Isr() interrupt 22 { if (P11 WIFI模块介绍 1.1 WIFI介绍 1.2 WIFI模块(ATK-ESP8266) 1.2.1 ATK-ESP-01 1.2.2 ATK-ESP8266 1.3 AT指令简介 2 硬件搭建 2.1 固件库的烧录 2.2 环境搭建 2.3 硬件连接 3 实验测试 3.1 AP模式 3.1.1 ESP8266作为服务器 3.1.2 ESP8266作为客户端 3.2 STA模式 3.2.1 ESP8266作为服务器 3.2.2 ESP8266作为客户端 3.3 连接原子云服务器 1 WIFI模块介绍1.1 WIFI介绍 首先跟大家介绍一下WIFI技术,WIFI网络是一种无线通信网络,也称为:无线宽带,正常的WIFI工作范围在100m的距离,但是收到发射功率大小的影32/**********C程序设计 枚举 P314*********/ /**********2013 1 2021:45 已测试*******/ #include<reg51.h> #include<stdio.h> void main() { enum color{red,yellow,blue,white,green,black}; //默认第一个枚举成员赋值为0,即red值为0 enum color i,j,k,pri; //color为枚举类型名,而color为枚举变量名 int n,loop; n=0; //种类统计 SCON=0x50; //串口工作方式 TMOD|=0x20; //确定定时器工作模式 TH1=0xF3; TR1=1; //开启定时器1 TI=1; // for(i=red;i<=black;i++) //第一种颜色变量 for(j=red;j<=black;j++) //第二种颜色变量 if(i!=j) //第0STM32F103C8T6使用ESP8266进行无线通信的示例代码 #include "stm32f10x.h" // 定义串口1的GPIO引脚 #define USART_GPIO GPIOA #define USART_TX_PIN GPIO_Pin_9 #define USART_RX_PIN GPIO_Pin_10 // 定义ESP8266的连接状态引脚 #define ESP8266_STATUS_GPIO GPIOA #define ESP8266_STATUS_PIN GPIO_Pin_8 // 定义发送和接收缓冲区大小 #define BUFFER_SIZE 128 // 接收缓冲区 char rx_buffer[BUFFER_SIZE]; // 发送缓冲区 char tx_buffer[BUFFER_SIZE]; // 接收完成标志 volatile uint8_t rx_complete = 0; // 串口1接收中断处理函数 void USART1_IRQHandler(voi111即将推出的 Ai8052U,片内准备了4K字节的程序 SRAM,笔者认为这意味着STC单片机不再仅仅是传统意义上的单片机了,而是一款可以跨入DOS时代的单片计算机了。对于这不同以往的“4K字节的程序 SRAM”的用途,笔者认为可以用在以下3个方面,这些都是磁盘操作系统(DOS)的典型的功能。1.异种操作系统的引导程序:BOOT2.单用户多任务的内存覆盖:OVERLAY3.用户程序和数据的动态加密/解密。一、异种操作系统的引导程序:BOOT(1)boot一词在计算机领域中源于004M8000,只要PLC运行,M8000就一直处于闭合状态,直到PLC停止运行。 M8001,只要PLC运行,M8001就一直处于断开状态,直到PLC停止运行。 M8002,PLC运行初期,M8002闭合一个扫描周期时间,然后一直处于断开状态。 M8003,PLC运行初期,M8003断开一个扫描周期时间,然后一直处于闭合 1、M8011, M8012, M8013 ,M8014是系统内具有特殊功能的内部继电器,只能使用他们的触点,不能驱动它们的线圈。 2、 M8011-10ms周期振荡时钟脉冲输出。 3、 M8012-100ms周期振荡时钟脉冲输出0AI33F400K512 工作电压: 1.9V ~ 5.5V 工作温度: -40℃ ~ 125℃ 内核: ARM, STAR-MC1/M33 核 SRAM: 400KB FLASH:512KB 振荡系统: PLL时钟 CPU最高主频可达200MHz,外设最高主频可达288MHz IHRC内振72M Hz , 精度 +/- 0.3%, 温飘 +/-1.2% XTAL 48MHz Crystal Oscillator 复位机制: (a) POR+LVR (b)/RESET-pin (c) LVD (d) WDT (e) Software Reset 数字外围: Cache, TCM, DCMI, SDIO, FMC 支持SDRAM接口 DMA: 8CH X 2 17个 TIMER ( T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14) – T1/T8, 2 × 16-bit motor control PWM with dead-PWM generation and emergency stop – PWM DMA420012操谓陈宫曰:“公台平生自谓智有余,今竟何如!”宫指布曰:“是子不用宫言,以至于此。若其见从,亦未必为禽也。”操曰:“柰卿老母何?”宫曰:“宫闻以孝治天下者不害人之亲,老母存否,在明公,不在宫也。”操曰:“柰卿妻子何?”宫曰:“宫闻施仁政于天下者不绝人之祀,妻子存否,在明公,不在宫也。”操未复言。宫请就刑,遂出,不顾,操为之泣涕,并布、顺皆缢杀之,传首许市。操召陈宫之母,养之终其身,嫁宫女,抚视其家1#include "reg51.h" #include "intrins.h" #define CYCLE 0x1000 sfr P_SW2 = 0xba; sfr PWMSET = 0xF1; sfr PWMCFG01 = 0xF6; sfr PWMCFG23 = 0xF7; sfr PWMCFG45 = 0xFE; #define PWM0C (*(unsigned int volatile xdata *)0xFF00) #define PWM0CH (*(unsigned char volatile xdata *)0xFF00) #define PWM0CL (*(unsigned char volatile xdata *)0xFF01) #define PWM0CKS (*(unsigned char volatile xdata *)0xFF02) #define PWM0TADC (*(unsigned int volatile xdata *)0xFF03) #define PWM0TADCH (*(unsigned char volatile xdata *)0xFF03) #define PWM0TADCL (*(unsigned char volatile xdata *)0xFF04) #define PWM0IF0bit MOTORX_RUN; //X轴启动标志 bit MOTORY_RUN; //Y轴启动标志 bit MotorX_LowFlag; //电机X轴低电平计数标志 bit MotorY_LowFlag; //电机Y轴低电平计数标志 uint MotorX_LowCounter; //电机X轴低电平计数器 uint MotorX_HighCounter; //电机X轴高电平计数器 uint MotorY_LowCounter; //电机X轴低电平计数器 uint MotorY_HighCounter; //电机X轴高电平计数器 /**************定时中断*************************/ void timer0() interrupt 1 { val++; if(val>100) { val=0; OUT1=~OUT1; //将测试口取反 } //X轴电机高低电平切换 if(MOTORX_RUN==1) //X8#include "reg52.h" #include "intrins.h" #define FOSC 11059200UL #define BRT (256 - FOSC / 9600 / 32) bit busy; char wptr; char rptr; char buffer[16]; /***************************************/ void UartIsr() interrupt 4 { if (TI) { TI = 0; busy = 0; } if (RI) { RI = 0; buffer[wptr++] = SBUF; wptr &= 0x0f; } } /***************************************/ void UartInit() { SCON = 0x50; TMOD = 0x20; TL1 = BRT; TH1 = BRT; TR1 = 1; AUXR = 0x40; wptr = 0x00; rptr = 0x00; busy = 0; } /***************************************/ void UartSend(char dat) { while (busy); busy = 1; SBUF0说明 data:RAM低128字节,响应速度最快,采用直接寻址方式 idata:RAM高128字节,采用间接寻址方式,速度相对较慢 bdata:片内RAM,位寻址方式 xdata:外部扩展RAM,采用DPTR访问 pdata:外部扩展RAM低256字节,分页寻址(一页256byte) code:程序存储区 1.xdata和data的区别 xdata是8051单片机中特有的寄存器存储区域,用于存储数据和程序代码。它位于内部RAM的最后64个字节中,具有较快的访问速度和较低的功耗。而data则是通用的数据存储区域,在外部RAM或ROM中分1include "reg52.h" #include "intrins.h" #define MAIN_Fosc 24000000L typedef unsigned char u8; typedef unsigned int u16; typedef unsigned long u32; /******************************用户定义宏 ***********************************/ #define Timer0_Reload (65536UL -(MAIN_Fosc / 1000)) #define PWMA_ENO (*(unsigned char volatile xdata *) 0xFEB1) #define PWMA_PS (*(unsigned char volatile xdata *) 0xFEB2) #define PWMB_ENO (*(unsigned char volatile xdata *) 0xFEB5) #define PWMB_PS (*(unsigned char volatile xdata *) 0xFEB6) #define PWMA_CR1 (*(unsigned char volatile xdata *) 0xFEC0)4第一章 新脚本驱动说明 一. 脚本驱动适用范围 1. 脚本驱动适用的版本 A. MCGS嵌入式组态软件; 版本号:6.5(01.0010)注:此版本以上为新版本,以下为旧版本 B. MCGS通用版的定制版组态软件 C. MCGS网络版的定制版组态软件 2. 脚本驱动适用的设备 A. 独立板卡设备 B. 串口通信设备 3. 脚本驱动适用的协议 二. 脚本驱动兼容性 1. 旧版本脚本驱动兼容新版本组态软件 2. 新版本脚本驱动不兼容旧版本的组态软件,旧版本组态软件无法识别新版本脚本驱动 三.1#include <reg52.h> #define uchar unsigned char// #define uint unsigned int // sbit START=P3^2;//启动 sbit STOP=P3^3;//停止 sbit FORWARD=P3^4;//正转 sbit BACK=P3^5;//反转 sbit EN=P1^0;//使能 sbit IN1=P3^6;//IN1 sbit IN2=P3^7;//IN2 sbit LED0=P1^2;// sbit LED1=P1^3;// sbit LED2=P1^4;// sbit LED3=P1^5;// /********************** 延时函数**************************/ void delay(uchar t)// { uchar m,n,s; for(m=t;m>0;m--) for(n=20;n>0;n--) for(s=248;s>0;s--); } /*********************************************************/ main() { while(1) { if(START==0) { delay(3); if(START==0电(0) 机(1) 开(2) 关(3) 一(4) 二(5) 三(6) 四(7) 五(8) 六(9) 七(10) 八(11) 九(12) 十(13) 0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00, 0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0x7F,0x88,0x88,0x88,0x88,0x9F,0x80,0xF0,0x00,/*"电",0*/ 0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00, 0x04,0x03,0x00,0xFF,0x00,0x83,0x60,0x1F,0x00,0x00,0x00,0x3F,0x40,0x40,0x78,0x00,/*"机",1*/ 0x80,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x80,0x00, 0x00,0x80,0x40,0x30,0x0F,0x00,0x00,0x00,0x00,0x00,00/*************三个端口都为低电平电机旋转****/ void Read_Intput(uint times) { vala=0; do { times--; RstKey(); for(;kcounter<10;) //按键循环10 { zstatus++; //报警计数器 if(IntPut4&&!IntPut22&&!IntPut23)//过桥退 机座退 润滑退 { LowVoltKey(); //按键低电平 计数器加一状态标志加一 } else if(~!IntPut4||~!IntPut22||~!IntPut23) //按键高电平 { HighVoltKey(); //按键计数器加一 状态计数器归零 } } if(kstatus>=8) /*按键状态标志大于等于8为有效值*/ { OutPut1=0; //电机开 OutPut17=0; //电机开 Signauto=1; /*0/*------------------主循环程序----------------*/ void main( ) /*主程序开始*/ { /**加一**/ P0M0=0XFF; //推挽输出 P0M1=0X00; //推挽输出 P1M0=0XFF; //推挽输出 P1M1=0X00; //推挽输出 P2M0=0X00; //准双向输入 P2M1=0X00; //准双向输入 P3M0=0X00; //准双向输入 P3M1=0X00; //准双向输入 P4M0=0XE1; //P4.0 4.5 4.6 4.7推挽输出 P4M1=0X00; //P4.1 4.2 4.3 4.4准双向输入 P5M0=(P5M0&~0x03)|0x3C; //P5.2 5.3 5.4 5.5推挽输出 P5M1&=~0x3F; //P5.0 5.1 准双向输入 P6M0=0X0F; //P6.0 6.1 6.2 6.3推挽输出 P6M1=0; //P6.4 6.5 6.6 6.7准双向输入 P7M04杨为民 关闭总中断或者关闭系统中断是单片机RTOS最常用的临界区保护方法。但是如果需要保护的程序临界区较长,关闭总中断方法会导致所有的中断都被停止,这使得整个RTOS系统的实时响应能力下降,如果只关闭系统中断,那么像RTOS的时间系统就会受到影响,影响定时时间的精度。利用对任务切换加锁/解锁进行临界区保护的方法是单片机RTOS临界区保护的最古老方法之一。采用这个方法,只是对任务切换的功能加锁,进入临界区后锁住RTOS不让进行42#include "..\..\comm\STC32G.h" #include "stdio.h" #include "intrins.h" typedef unsigned char u8; typedef unsigned int u16; typedef unsigned long u32; #define MAIN_Fosc 24000000UL /****************************** 用户定义宏 ***********************************/ #define Timer0_Reload (65536UL -(MAIN_Fosc / 1000)) //Timer 0 中断频率, 1000次/秒 #define PWM1_0 0x00 //P:P1.0 N:P1.1 #define PWM1_1 0x01 //P:P2.0 N:P2.1 #define PWM1_2 0x02 //P:P6.0 N:P6.1 #define PWM2_0 0x00 //P:P1.2/P5.4 N:P1.3 #define PWM2_1 0x04 //P:P2.2 N:P2.3 #define PWM2_2 0x08 //P:P6.2 N:P6080#include "reg52.h" #include "intrins.h" #define uchar unsigned char #define uint unsigned int typedef unsigned char BYTE; typedef unsigned int WORD; #define FOSC 11059200L //系统频率 #define BAUD 9600 //串口波特率 #define NONE_PARITY 0 //无校验 #define ODD_PARITY 1 //奇校验 #define EVEN_PARITY 2 //偶校验 #define MARK_PARITY 3 //标记校验 #define SPACE_PARITY 4 //空白校验 #define PARITYBIT EVEN_PARITY //定义校验位 sbit key_1=P3^2; sbit key_2=P3^3; sbit key_3=P1^3; sbit key_4=P1^2; sbit CS=P2^6; //12864PIN4 sbit SID=P2^7; //12864PIN5 sbit SCLK=P14昆仑通态组态软件和单片机Modbus TCP以太网通信 一、通信目的: 1、组态软件可以对1#单片机(IP地址为192.168.1.120)数字量输入、继电器输出、模拟量输入、模拟量输出实现读、写操作; 2、组态软件可以对2#单片机(IP地址为192.168.1.121)数字量输入、继电器输出、模拟量输入、模拟量输出实现读、写操作; 3、组态软件可以对3#单片机(IP地址为192.168.1.122)数字量输入、继电器输出、模拟量输入、模拟量输出实现读、写操作; 4、组态软件对1#~3#单片机数0仪表要支持RS485并且支持标准ModbusRTU协议,打开MCGS PRO,打开设备窗口,空白处右键,打开设备工具箱,设备管理,通用设备,Modbus,添加ModbusRTU。将ModbusRTU(子)挂在通用串口父设备(主)下。然后打开ModbusRTU(子),增加设备通道,里面有[1],[0],[3],[4]四个区,如果是继电器就选[1],[0]区,如果是寄存器就选[3],[4],然后再选数据类型和通道地址。如果是自由协议的报文通讯,这个要找官方开发驱动或者是自己开发驱动。19什么是脚本驱动 脚本驱动是一种使用MCGS脚本语言编写的设备驱动程序。 昆仑通态推出脚本驱动的目的,是给用户提供一种与传统MCGS组态软件中驱动程序功能兼容的、编程简便的设备驱动开发方法。 使用MCGS提供的脚本驱动开发工具,能够让您迅速的开发出脚本驱动程序。相对于VC、VB驱动程序的开发,脚本驱动的开发更简单、更容易 。脚本驱动屏蔽了设备驱动开发的技术细节,采用与MCGS脚本语言兼容的编程语言,封装了大量标准功能,并提供必要的