笔记
您隔壁的王老五
退休总工
展开
-
一步一步写51操作系统(一)
我对操作系统的任务调度很感兴趣,特别好奇几个死循环是怎么切换的,虽然操作系统原理的书上讲的很多通过定时器中断,把时间切成时间片,每个任务执行一段时间片后,切换到下一个任务;仔细研究就会发现,每次调动子程序块的时候,硬件自动把将来要执行的下一条命令的地址存入堆栈,PC是16位内推,堆栈是8位,每个PC地址占用堆栈的两位字节,SP 内容指向了高字节。这是先申请俩字节,每个任务对应一个字节,用来存放SP的值,等到切换命令到来时候,用来寻找各自的任务栈中存放的PC值的。把任务1的函数地址存到了自己单独的堆栈空间。原创 2023-12-21 15:26:33 · 606 阅读 · 0 评论 -
c语言随机数的产生方法
但是虽然每次调用rand(),函数时值不一样,他们是一个系列,可是下一次运行程序时候,出来的随机数还是这个序列。这是因为rand()函数要产生一个随机数必须依靠一个种子数,如果没有约定,种子数就是1;写程序时候有时候需要产生一个随机数,c语言有内建的随机数产生函数rand();这样种子数就是随时间变化的数,rand()函数随机出来的数就不是固定的序列了。这时,a变量内存的是0到32767(32位操作系统)之间的一个随机数。这样每次程序运行产生的第一个随机数都一样,第二个也一样以后都一样。原创 2022-12-02 18:53:23 · 1283 阅读 · 0 评论 -
C语言循环语句之do---while循环的条件问题
do while语句是一种出口条件循环,即在执行完循环体后,才根据测试条件决定是否再次执行循环。因此,该循环至少必须执行一次。意思就好像是标准的英国人说英语的语法,你要一直做什么直到什么;所以do--while循环也叫做。do while 语句创建一个循环,在(’之前,重复执行statement部分。你要不停的做,直到某个条件成立;通俗点说就是只要条件不为真就重复循环。循环体可是一条简单语句或复合语句。,重复执行循环体中的内容。在expression为。原创 2022-12-02 18:21:32 · 2006 阅读 · 0 评论 -
modbus通讯主机发送命令校验方法
modbus是工业自动化领域常用的通讯协议,主机在从机发送命令的过程中,为了纠错,常常用crc校验。本文就主机部分展开;在MFC方法下可以这样实现;原创 2022-09-04 20:04:37 · 1137 阅读 · 0 评论 -
c++中的变量和引用
写程序的时候如果把内存地址号拿来直接处理会引起很多麻烦,程序员要反复查找地址,所以引入了符号代替地址这个方法,这个代替地址的符号就是变量;大部分教科书说这是给变量名起了一个别名...原创 2022-07-23 09:21:34 · 309 阅读 · 0 评论 -
随机数的产生方法
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 · 895 阅读 · 0 评论 -
C++拷贝构造函数
(“拷贝构造函数”)是一种特殊的构造函数。“拷贝构造函数”是一种名称;它有以下特点;1、函数的名称必须和类名称一致。2、它有唯一的一个参数,该参数是const类型,不可变的。例如:类Cstudent的"拷贝构造函数"的形式为Cstudent(const Cstudent &x)。这个x是个任意符号,尊守变量命名原则;下面用例子说明;......原创 2022-07-13 13:03:41 · 277 阅读 · 0 评论 -
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 · 1208 阅读 · 0 评论 -
宽字符在程序中的使用
在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 · 112 阅读 · 0 评论 -
c++语言多文件编程的方法;
为了编写大型程序方便管理,把不同的函数写到不同的文件内不失是一种好方法,那么文件a内的函数,如何调用文件b内的函数呢?下面用例子说明;第一步,编写被调用的函数文件,当然每个文件都可以是被调用文件,这里以不含主函数的文件为被调用文件;文件名add.cpp; 第二步,编写与被调用文件同名的头文件add.h第三步,编写调用文件,本文件可以是包含主函数的文件也可以是其他的文件,c++里面的函数都是平等的,本文件havemain.cpp;调用文件要包含被调用文件的头文件;用哪个变量就用extern关原创 2022-07-09 18:41:57 · 2747 阅读 · 3 评论 -
winc++由系统提供的窗口类
由系统提供的窗口类 弹出式菜单窗口 桌面窗口 对话框 MDI子窗口区域 BUTTON 按钮控件窗口 SCROLLBAR 滚动条控件窗口 STATIC 静态控件窗口 COMBOBOX 组合框控件窗口 EDIT 编辑控件窗口 ComboLBox 列表框控件窗口 RICHEDIT 多信息编辑控件窗口 SysTabControl3原创 2022-07-07 07:11:37 · 309 阅读 · 0 评论 -
_tWinMain 与wWinMain 区别
在32位系统中,用了UnIcode,所以定义了一个新的函数名称;原创 2022-07-06 17:41:48 · 290 阅读 · 0 评论 -
2021-04-17
单片机程序设计中要经常的在数制之间进行转换,以51为例介绍16进指数转化为bcd码的方法准备一个char数组用来存放转换后的结果;例如数组低位存高位,高位存低位;原创 2022-07-06 09:21:11 · 100 阅读 · 0 评论 -
WNDCLASS(WNDCLASSEX)结构介绍
WNDCLASS结构包含了窗口类的属性。 这个结构在使用RegisterClassEx函数注册窗口类时被WNDCLASSEX结构所取代。如果不需为窗口类设置小图标时,仍然可以使用WNDCLASS和RegisterClass。 typedef struct { UINT style; WNDPROC lpfnWndProc;原创 2022-07-06 09:19:40 · 2341 阅读 · 0 评论 -
数据结构LVCOLUMN和LVITEM
VC++列表视图控件有两个重要的数据结构LVCOLUMN和LVITEM。LVCOLUMN用于定义报表方式下的“列”的结构;LVITEM用于定义行或者叫做“项”的结构。这两个结构的定义及说明如下:typedef struct _LVCOLUMN {UINT mask; //说明此结构中哪些成员是有效的int fmt; //列的对齐方式int cx;原创 2022-07-05 21:21:59 · 650 阅读 · 0 评论 -
C语言运算优先级口诀
一个口诀解决了c运算符优先级问题原创 2022-06-23 21:16:50 · 2091 阅读 · 0 评论 -
我是如何成为富翁的2
其实在1993年,我跑出来了一年左右,设计了一款所谓的治疗眼睛的仪器。在浙江慈溪横河镇开模。后来那个公司赚了很多钱。由于考虑到要评职称就又回到了国企。1996年到2004年间在市场上闯荡,赚钱并不多,2004年后半年,接了个给油库做发油机的活。工控机做主机,单片机做下位机。这次是我真正下了力气写程序的时候。整整45天,用汇编写了12K。单片机用了两个,互相通讯,互为唤醒者。一块跑主程序,一块跑键盘、液晶显示。经过后来使用效果良好。自此深入地理解了单片机和外围。时间到了2005年,因为自己没啥起色,又打算原创 2022-01-16 09:33:04 · 126 阅读 · 1 评论