自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 small RTOS逐步分析(1)

small rtos 是陈明计先生根据51机器的特点,专门写的少内存专用rtos。用来保证移植性,当然作者是为了适应大部分使用者来写的,每个人可以根据自己实际的的编译器重新定义。不同的cpu,宏和常量有可能不同,在做系统移植的时候要调整这个文件内容。首先,作者推荐了一种编程技巧,那就是专门写一个点H文件,把需要包含的内容和定义的内容都放在这个头文件里。

2023-12-22 18:13:12 482

原创 一步一步写51操作系统(一)

我对操作系统的任务调度很感兴趣,特别好奇几个死循环是怎么切换的,虽然操作系统原理的书上讲的很多通过定时器中断,把时间切成时间片,每个任务执行一段时间片后,切换到下一个任务;仔细研究就会发现,每次调动子程序块的时候,硬件自动把将来要执行的下一条命令的地址存入堆栈,PC是16位内推,堆栈是8位,每个PC地址占用堆栈的两位字节,SP 内容指向了高字节。这是先申请俩字节,每个任务对应一个字节,用来存放SP的值,等到切换命令到来时候,用来寻找各自的任务栈中存放的PC值的。把任务1的函数地址存到了自己单独的堆栈空间。

2023-12-21 15:26:33 500

原创 51单片机基于时间片轮转的简单rtos

基于51单片机的时间片轮转调度系统,也可成为RTOS。

2023-12-19 22:20:52 1073 1

原创 ST7565R驱动的12864液晶屏驱动示例程序

ST7565R驱动的12864液晶屏驱动示例程序

2023-12-09 12:06:47 678

原创 *p++和*(p++)以及(*p)++的区别

P++,因为*和++的优先级一样,结合方式都是自右向左,先执行P++使P指向下一个地址,然后再执行*操作,即取P已经增加了1后,指向的地址的数值。(*P)++,指的是先取p指向的地址的变量的数值,然后数组再自增1。一般是定义一个变量,把取的值增一后存入变量中。即,先取arr[0]的值,然后又增1,把此值给a;p此时仍然指向arr[0];程序先把arr数组的首地址给了p;然后执行p++操作,此时p指向了arr[1];(或者:p=arr[0])*(P++)和*P++一样的功能。

2023-05-21 07:50:33 754

原创 c语言随机数的产生方法

但是虽然每次调用rand(),函数时值不一样,他们是一个系列,可是下一次运行程序时候,出来的随机数还是这个序列。这是因为rand()函数要产生一个随机数必须依靠一个种子数,如果没有约定,种子数就是1;写程序时候有时候需要产生一个随机数,c语言有内建的随机数产生函数rand();这样种子数就是随时间变化的数,rand()函数随机出来的数就不是固定的序列了。这时,a变量内存的是0到32767(32位操作系统)之间的一个随机数。这样每次程序运行产生的第一个随机数都一样,第二个也一样以后都一样。

2022-12-02 18:53:23 1240

原创 C语言循环语句之do---while循环的条件问题

do while语句是一种出口条件循环,即在执行完循环体后,才根据测试条件决定是否再次执行循环。因此,该循环至少必须执行一次。意思就好像是标准的英国人说英语的语法,你要一直做什么直到什么;所以do--while循环也叫做。do while 语句创建一个循环,在(’之前,重复执行statement部分。你要不停的做,直到某个条件成立;通俗点说就是只要条件不为真就重复循环。循环体可是一条简单语句或复合语句。,重复执行循环体中的内容。在expression为。

2022-12-02 18:21:32 1831

原创 LCD12864的操作例程

12864液晶屏是工业控制领域常用的显示部件,以下为老朽自己写的一部分程序以搏一洒;

2022-09-12 19:12:08 1613 2

原创 modbus通讯主机发送命令校验方法

modbus是工业自动化领域常用的通讯协议,主机在从机发送命令的过程中,为了纠错,常常用crc校验。本文就主机部分展开;在MFC方法下可以这样实现;

2022-09-04 20:04:37 1026

原创 c++中的变量和引用

写程序的时候如果把内存地址号拿来直接处理会引起很多麻烦,程序员要反复查找地址,所以引入了符号代替地址这个方法,这个代替地址的符号就是变量;大部分教科书说这是给变量名起了一个别名...

2022-07-23 09:21:34 289

原创 随机数的产生方法

1)如果希望rand()在每次程序运行时产生的值都不一样,必须给srand(seed)中的seed一个新值,这个值必须在每次程序运行时都不一样(比如从1970年到目前为止流逝的时间)。但是,如果下次调用rand()函数之前不改变x的值产生的依然是一系列的伪随机数,尤其在循环的时候;为了解决这个问题,在每次调用rand()之前先调用一次srand(intx)函数,这样rand()产生的随机数在x和32767之间;产生11到15之间的随机数,含11,含15,用rand_num%5+11就行,以此类推;.....

2022-07-20 22:34:16 789

原创 C++拷贝构造函数

(“拷贝构造函数”)是一种特殊的构造函数。“拷贝构造函数”是一种名称;它有以下特点;1、函数的名称必须和类名称一致。2、它有唯一的一个参数,该参数是const类型,不可变的。例如:类Cstudent的"拷贝构造函数"的形式为Cstudent(const Cstudent &x)。这个x是个任意符号,尊守变量命名原则;下面用例子说明;......

2022-07-13 13:03:41 230

原创 c++中this指针的作用

this 指针是一个隐含指针。它指向正在调用成员函数的那个对象实例。其中有一个成员函数 int get_age;取得年龄的数值;在主程序中调用成员函数:第6行 age = dog1.get_age();调用成员函数int get_age(),此时内部隐含的this指针指向了dog1这个实例; 其实在程序的第3行,用类名Cdog定义实例dog1和dog2的时候,编译器已经给实例dog1分配了内存,这个内存的首地址,编译器是知道的;在第6行age = do............

2022-07-11 08:03:32 1125

原创 宽字符在程序中的使用

在TCHAR.H里,有这么小段define.#ifdef _UNICODE #define _tWinMain wWinMain #else #define _tWinMain WinMain #endif由于为了支持UNICODE,C运行库对WinMain其实区分了UNICODE版和ANSI版.对UNICODE版的程序,C运行库将调用wWinMain,而对于ANSI版的应用,则调用WinMain.这是第一点.   第二点:MFC的代码设计时是自动支持UNICODE的,所以,MFC的WinMa

2022-07-09 18:44:19 96

原创 c++语言多文件编程的方法;

为了编写大型程序方便管理,把不同的函数写到不同的文件内不失是一种好方法,那么文件a内的函数,如何调用文件b内的函数呢?下面用例子说明;第一步,编写被调用的函数文件,当然每个文件都可以是被调用文件,这里以不含主函数的文件为被调用文件;文件名add.cpp; 第二步,编写与被调用文件同名的头文件add.h第三步,编写调用文件,本文件可以是包含主函数的文件也可以是其他的文件,c++里面的函数都是平等的,本文件havemain.cpp;调用文件要包含被调用文件的头文件;用哪个变量就用extern关

2022-07-09 18:41:57 2371 3

原创 winc++由系统提供的窗口类

由系统提供的窗口类 弹出式菜单窗口 桌面窗口 对话框 MDI子窗口区域 BUTTON 按钮控件窗口 SCROLLBAR 滚动条控件窗口 STATIC 静态控件窗口 COMBOBOX 组合框控件窗口 EDIT 编辑控件窗口 ComboLBox 列表框控件窗口 RICHEDIT 多信息编辑控件窗口 SysTabControl3

2022-07-07 07:11:37 280

原创 _tWinMain 与wWinMain 区别

在32位系统中,用了UnIcode,所以定义了一个新的函数名称;

2022-07-06 17:41:48 224

原创 2021-04-17

单片机程序设计中要经常的在数制之间进行转换,以51为例介绍16进指数转化为bcd码的方法准备一个char数组用来存放转换后的结果;例如数组低位存高位,高位存低位;

2022-07-06 09:21:11 73

原创 WNDCLASS(WNDCLASSEX)结构介绍

WNDCLASS结构包含了窗口类的属性。 这个结构在使用RegisterClassEx函数注册窗口类时被WNDCLASSEX结构所取代。如果不需为窗口类设置小图标时,仍然可以使用WNDCLASS和RegisterClass。 typedef struct { UINT style; WNDPROC lpfnWndProc;

2022-07-06 09:19:40 1953

原创 数据结构LVCOLUMN和LVITEM

VC++列表视图控件有两个重要的数据结构LVCOLUMN和LVITEM。LVCOLUMN用于定义报表方式下的“列”的结构;LVITEM用于定义行或者叫做“项”的结构。这两个结构的定义及说明如下:typedef struct _LVCOLUMN {UINT mask; //说明此结构中哪些成员是有效的int fmt; //列的对齐方式int cx;

2022-07-05 21:21:59 610

原创 C语言运算优先级口诀

一个口诀解决了c运算符优先级问题

2022-06-23 21:16:50 2008

原创 我是如何成为富翁的3

2020年6月份左右,发现一款自动化设备。我似乎能做,经过调研,开始设计。机械,结构,电器,电子。设备,一个人搞。直到现在。还没有上市,搞了一年了。哈哈。之前发的几个技术文章都是我设计过程中的一些事情。线路板用力创eda。设计了两轮了。我自己感觉快成了。...

2022-01-16 09:42:33 113 1

原创 我是如何成为富翁的2

其实在1993年,我跑出来了一年左右,设计了一款所谓的治疗眼睛的仪器。在浙江慈溪横河镇开模。后来那个公司赚了很多钱。由于考虑到要评职称就又回到了国企。1996年到2004年间在市场上闯荡,赚钱并不多,2004年后半年,接了个给油库做发油机的活。工控机做主机,单片机做下位机。这次是我真正下了力气写程序的时候。整整45天,用汇编写了12K。单片机用了两个,互相通讯,互为唤醒者。一块跑主程序,一块跑键盘、液晶显示。经过后来使用效果良好。自此深入地理解了单片机和外围。时间到了2005年,因为自己没啥起色,又打算

2022-01-16 09:33:04 111 1

原创 我是如何成为富翁的

在我想要学习写程序之前,是个电子爱好者,经常鼓捣点电子玩意,小时候的收音机一类。到了1990年大学毕业,分配到了电视机厂做电视机结构设计工作,在这里我如鱼得水地学习了电视机的全部知识,捎带着学习了录像机VCD机等知识。到了工作到5-6个年头的时候,电视机技术炉火纯青了。比如修理电视机啥的,基本上看看状况就直接动手换件。万用表都少用。后来不甘心国营工厂的低效率,屡屡有创业的冲动。在此期间精通了塑料制品设计,常用的塑料特性了如指掌。精通了小冲压产品设计。当时都是爬图板画米格纸,然后描图员描成硫酸纸,然后晒图。当

2022-01-15 15:34:12 136

原创 KS0108控制的12864液晶屏的反白显示办法

看了许多网上文章,没有清楚介绍12864液晶反白显示的。不才拙见呈给众码友以博一洒;反白常用的手法是读出液晶屏内存储器的相应数据,然后按位取反,再写入液晶相应内存;12864读取液晶内存的手法比较特别,直接按照时序图写数据不行,它要求使能信号至少完成两次反转才行。首先命令给予地址,使能信号给予低电平,延时半个周期约200ns然后,rs,rw,置位。再延时200ns;使能信号置位;至此完成一次虚读,不把总线数据读入变量;再延时450ns,使能变低;再延时450ns;使能变高

2022-01-15 10:04:41 1407

原创 CRC-16 / MODBUS 校验计算方法二

单片机在传输modbus数据的时候需要进行crc校验,本文介绍另一种校验方法;第一步 设置一个16位寄存器,例如为:jicun ;寄存器初始值为 0xFFFF。第二步CRC-16 / MODBUS的多项式为0xA001。第三步 开始计算,把需要校验的字节与寄存器的低位相异或,结果仍存在寄存器; 例如: jicun = zijie1^ jicun第四步:难点来了,注意此步分两种情况, A:判断寄存器的最低比特位,如果为1......

2021-04-30 06:55:52 3274 6

原创 51单片机const unsigned char number[16]是啥意思

单片机程序中const unsigned char number[16]= 这句话的具体含义是什么单片机程序中constunsignedcharnumber[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};这句话的具体含义是什么这句话的具体含义是 const是指定义的变量不能被改动,(它是constant的缩写),整句话的意思是定义了一个不可变的无符号字符型数组,数组占6个c

2021-04-18 06:17:07 1706

原创 16进制数转化为bcd码的方法

单片机设计中经常进行数制之间的转换,int类型数据可以存放65535以下的数。转化为bcd码用以下方法;unsigned int hexresult; //待转化的16进制数;unsigned char bcdresult[5]; //转化后的bcd码存入数组;void hex2bcd() { bcdresult[0]=hexresult%10;//个位 bcdresult[0]=(hexresult/10)%10;//十位 bcdresult[0]=(hexresult/10

2021-04-17 16:04:03 8386 2

原创 modebus通讯crc校验方法

modebus通讯crc校验方法

2021-04-17 13:11:08 615 2

转载 这是网上找到的赵工的地址

www.dwenzhao.cn/profession/mcu/mcu51clib.html

2018-04-27 11:41:38 159

原创 VB中CharUpperBuff()的用法

在VB中经常用到字母的大小写转换,CharUpperBuff()是把小写字母转化为大写字母的api 函数,使用前需要声明;Private Declare Function CharUpperBuff Lib "user32" Alias "CharUpperBuffA" (ByVal lpsz As String, ByVal cchLength As Long) As Long其中的参数lpsz...

2018-04-20 12:24:51 797

利用1602和1032做的时钟程序

利用走时电路和1302做的能够调节时间的时钟程序。

2023-11-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除