- 博客(167)
- 资源 (2)
- 收藏
- 关注
原创 DS18B20测温程序
本文介绍了一个基于DS18B20数字温度传感器的温度测量系统。系统采用AT89X51单片机控制,通过单线接口与DS18B20通信,实现了温度数据的采集与显示。程序包含初始化、读写操作、温度转换等关键函数,并采用数码管动态扫描方式显示温度值(包含整数和小数部分)。系统具有抗干扰能力强、测量精度高的特点,适用于远距离温度监测。文中还提及了DS18B20的通信时序要求,这是保证数据准确传输的关键。该设计展示了嵌入式系统中数字温度传感器的典型应用方案。
2026-04-19 07:47:12
8
原创 C#如何实现textbox文本多行输出 且自动换行输出
摘要:WinForms中实现TextBox多行输出的关键步骤包括:1)设置Multiline和WordWrap属性启用多行自动换行;2)通过ScrollBars添加滚动条。文本输出可采用直接赋值、追加文本(AppendText)或循环输出方式。典型应用场景包括日志显示,配合ScrollToCaret实现自动滚动显示最新内容。代码示例展示了属性设置和三种文本输出方法,其中推荐使用设计器设置属性结合AppendText追加内容。
2026-04-17 14:18:54
174
原创 C#程序,窗体1向窗体2的textbox控件写入字符串“hello”
本文介绍了在C#中实现窗体间数据传递的几种方法:1)通过设置控件的Modifiers属性为Public;2)在目标窗体创建公共方法;3)保存窗体实例引用实现重复访问。重点演示了如何从Form1向Form2的TextBox控件写入文本,包括首次打开和已存在实例两种情况,提供了完整的代码示例和实现步骤。
2026-04-17 10:46:34
36
原创 Keil µVision 调试指南---UART#1 模拟/调试窗口 完全使用教程
Keil调试中的UART#1窗口使用指南 摘要: Keil调试环境下的UART#1窗口是一个强大的虚拟串口终端工具,支持软件仿真和硬件调试两种模式。在软件仿真模式下,无需硬件即可通过重定向printf输出到UART#1窗口;硬件调试时则可通过ASSIGN命令将物理串口映射到该窗口。本文详细介绍了初始化配置、printf重定向方法、数据收发模拟等关键技巧,并提供了常见问题解决方案。无论是算法验证还是硬件调试,UART#1窗口都能显著提升串口通信调试效率,配合S0TIME参数调整还可优化仿真速度,是嵌入式开发的
2026-04-15 16:17:52
526
1
原创 在Windows中如何用cmd 查询当前串口
摘要:通过命令提示符查看COM端口的方法:1)按Win+R,输入cmd打开命令窗口;2)输入mode命令回车;3)系统将显示所有可用COM端口列表。该操作简单快捷,无需额外工具即可获取串口信息,适用于硬件调试和端口检查等场景。
2026-04-15 15:56:46
22
原创 ALE频率是晶振频率的1/12吗?
摘要: 标准8051单片机(12T模式)中,ALE引脚频率并非晶振频率的1/12,而是1/6(如12MHz晶振对应ALE=2MHz)。该频率源于每个机器周期(12时钟周期)内ALE输出两次脉冲。传统51单片机(如AT89C52)的ALE始终输出固定频率脉冲,可用于外部时钟源,而增强型1T单片机(如STC15)的ALE频率可配置或关闭。实际应用时需注意: 标准12T模式:ALE=晶振频率/6,与机器周期频率(晶振/12)不同; 1T模式:ALE频率由寄存器配置(如STC默认fOSC/4); 关闭ALE可降低E
2026-04-14 13:49:27
893
原创 51单片机引脚 ALE EA PSEN的用途
51单片机的三个关键引脚功能如下:**EA/VPP(31脚)**选择内外程序存储器,接高电平使用内部ROM;**PSEN(29脚)**控制外部ROM读取,输出低电平脉冲;**ALE/PROG(30脚)**在P0口复用时分时锁存地址。现代应用中,EA需接Vcc使用内部存储器,PSEN和ALE可悬空。这些引脚在外部扩展存储器时才会发挥作用。
2026-04-14 13:30:03
70
原创 51单片机定时器PWM发生
【摘要】该程序基于51单片机实现PWM恒速控制,通过定时器T1(0.5ms中断)产生200Hz的PWM信号。系统初始化配置定时器模式(TMOD=0x11)并设置初值(TH1=0xFE,TL1=0x33),开启中断(IE=0x8A)。主循环中通过timer1变量(0-100循环)控制P1^1引脚输出占空比30%的PWM波(timer1<30输出低电平,否则高电平)。定时器中断服务程序完成定时器重装和timer1自增操作。最终实现固定频率和占空比的PWM输出功能。(150字)
2026-04-14 10:57:49
180
原创 波特率115200,51单片机Modbus RTU
本文介绍了一个基于51单片机的Modbus RTU串口通信实现方案。系统采用115200波特率,通过串口与电脑连接,支持Modbus协议功能码03(读保持寄存器)和06(写单个寄存器)。代码实现了串口初始化、CRC校验计算、寄存器读写操作以及异常处理等功能。主程序循环处理Modbus请求并显示接收数据,中断服务程序负责数据接收。系统测试时需通过串口调试助手发送指令,验证通信功能。该方案适用于工业控制领域的数据采集和设备控制应用。
2026-04-13 09:16:04
26
原创 反Park+反Clarke变换
本文演示了通过反Park和反Clarke变换将dq轴电流(id,iq)转换为三相电流(ia,ib,ic)的过程。Matlab代码实现了两种工况的对比分析:工况1(id=1A,iq=1A)和工况2(id=1A,iq=2A)。结果显示,随着iq增大,三相电流幅值从1.414A增至2.236A(符合Is=√(id²+iq²)),电流相位角从45°增大到63.4°。三相电流呈现标准正弦波形且互差120°,验证了变换的正确性。该变换在电机控制中具有重要意义,iq增大对应转矩分量增加,而id不变保持励磁分量恒定。
2026-04-09 19:15:58
104
原创 51单片机的modbus rtu代码
摘要:本文提供了基于51单片机的Modbus RTU从站完整实现代码,支持功能码03(读保持寄存器)和06(写单个寄存器)。代码包含串口初始化、CRC校验计算、请求处理及响应发送等功能模块,通过定义10个保持寄存器(地址0x0000-0x0009)实现数据读写。测试示例展示了如何通过Modbus主站软件发送标准指令进行寄存器读写操作,包括读取10个寄存器和写入单个寄存器的具体命令格式。系统采用中断方式处理串口通信,并包含基本的异常响应机制。
2026-04-07 13:53:00
268
原创 51单片机串口收发程序
摘要:本文介绍了一个基于51单片机的串口通信系统设计。系统实现了51单片机与PC的双向通信功能,波特率设置为2400。单片机程序包含数码管显示模块和串口通信模块,能够接收PC端发送的数据并在数码管显示,同时定时向PC发送数据。程序通过初始化串口、定义发送字节/字符串函数,以及处理串口中断来实现通信功能。数码管采用动态扫描方式显示接收数据,主循环中还包含LED状态控制和数据发送逻辑。该系统可用于基础的串口通信测试和数据显示应用。
2026-04-05 21:35:19
19
原创 linux /etc 目录 etc是什么缩写
/etc目录是Unix/Linux系统中存放系统配置文件的标准化位置,其名称源于拉丁语"etcetera"(意为"等等")。最初用于存放杂项文件,后逐渐演变为专门存储系统配置的目录,包含用户账户、网络设置、启动脚本等重要配置文件。尽管其全称为"etcetera",但常被幽默地解读为"Editable Text Configuration"或"Everything To Configure"。从早期Unix到现
2025-12-27 21:47:01
343
原创 PC16550 和 INT8251 串行通信芯片的比较
本文对比了PC16550和INT8251两种串行通信芯片的技术特点。PC16550仅支持异步通信,具有16字节FIFO缓冲,可显著降低CPU中断频率;而INT8251支持同步/异步双模式,但采用单缓冲架构。编程方面,PC16550通过FIFO控制寄存器简化初始化,支持115200bps高速通信;INT8251需要更复杂的初始化流程,波特率上限较低。性能上,PC16550在高负载下表现更优,INT8251则适合简单的同步通信需求。两种芯片各有优势,选择取决于具体应用场景。
2025-12-19 17:19:54
326
原创 emu8086 串口输出 hello world
这段8088汇编程序主要实现LED灯控制和串口通信功能。程序初始化后进入主循环:首先通过端口800H控制LED灯交替点亮和熄灭,并调用延时函数DELAY;然后通过16550串口芯片发送字符串"i8088-HELLO boy or girl!"。程序包含串口发送子程序SEND和字符串输出子程序STR_OUT/STR_OUT100,使用'$'作为字符串结束符。延时函数DELAY通过嵌套循环实现,串口通信采用查询方式检测发送就绪状态。整个程序结构清晰,包含初始化、LED控制、串口输出三个主要部
2025-12-19 08:23:38
229
原创 一块8088单板机,桌面上的技术玩具
《8088单板机:数字时代的怀旧玩具》摘要:作者书桌上的8088单板机,是40年前的个人计算机先驱。这台主频仅4.77MHz、内存64KB的设备,在当代科技环绕中显得格格不入,却成为作者理解计算机本质的窗口。通过直接编写汇编指令、观察硬件响应,作者体验着数字世界最原始的透明性——从硅芯片到发光二极管的完整路径清晰可见。在这个算法黑箱遍布的时代,这块能完全掌握的老旧电路板成为技术禅修的载体,既是对计算起源的致敬,也是对"理解权"的坚守。它提醒我们:真正的技术快乐,或许就是让一颗LED按照你
2025-12-18 11:02:15
1164
原创 Deepseek生成8088单板机的流水灯程序
摘要:本文介绍了一个基于emu8086编写的8位LED流水灯控制程序,端口地址为800H,程序加载地址为CS:IP=0000:2000。程序实现了多种流水灯效果,包括左右流动、中心汇聚/扩散和全闪效果。通过子程序调用实现不同模式切换,并包含基本延时控制。程序采用循环移位和位操作实现灯效变化,最终生成可执行代码在emu8086环境中运行。该设计展示了8086汇编语言对硬件端口的控制能力。
2025-12-18 10:41:02
375
原创 8255 PORTC 按键输入测试
本文介绍了一个基于8086微处理器的硬件电路测试程序,使用NASM汇编语言编写。程序主要功能包括:初始化8255芯片、控制LED灯显示(交替点亮和熄灭)、串口通信(发送字符串"key0eventhappen!"当K4按键按下时)以及延时处理。程序通过监控BIOS下载到内存0000:2000处执行,展示了基本的I/O端口操作、8255芯片初始化和串口通信功能。该程序是为配套《在做中学微机原理》课程设计的示例,帮助学习者理解8086系统的硬件控制和编程基础。
2025-12-16 10:09:08
206
原创 Deeepseek生成8255动态显示程序(续)
该程序实现了通过8255芯片驱动8位数码管动态显示"12345678"的功能。程序设置了8255控制端口(203h)、段码输出端口(200h)和位码输出端口(201h),初始化8255为A口和B口均为方式0输出。主程序通过循环调用DISPLAY_12345678子程序实现持续显示,该子程序依次输出每个数字的段码和位码,配合延时保持显示效果。程序包含清除显示、初始化和延时等辅助子程序,并提供了共阳极数码管的段码表(0-9数字)。硬件连接要求PORTA输出段码,PORTB输出位码,控制口连接
2025-12-16 08:58:52
229
原创 Deeepseek生成8255动态显示程序
摘要:该程序使用8086汇编语言编写,通过8255芯片驱动8位数码管动态显示"12345678"。硬件连接中,PORTA(200h)输出段码,PORTB(201h)输出位码。程序从CS:0000,IP:2000开始执行,首先初始化8255为A/B口输出模式。主循环调用DISPLAY_12345678子程序,该子程序通过段码表和位选码循环实现8位数字的动态显示,每个数字显示后加入延时。程序包含消隐、初始化和延时功能模块,最后需添加5个55H作为结尾标识以便单板机加载运行。
2025-12-16 08:41:03
755
原创 8255驱动数码管动态显示
本文介绍了基于8255芯片的数码管动态显示系统设计。系统采用共阴极数码管,通过8255的A口输出段码(0x3F-0x6F对应0-9)、B口输出位码实现动态扫描。程序包含8255初始化(控制端口0x203)、延时函数和显示函数,通过循环扫描8位数码管(位码0xFE-0x7F)实现动态显示效果。系统还包含串口通信功能,可发送寄存器状态和中断计数信息。汇编代码部分实现了8255初始化、LED控制及字符串输出功能。整个系统通过8255的端口控制(A口0x200,B口0x201,控制口0x203)完成数码管的动态显示
2025-12-15 14:38:53
403
原创 8088单板机C语言汇编混合编程实验方法与步骤
该例程prj14展示了基于8088单板机的综合中断处理功能。系统通过8253定时器触发IR0中断实现数码管动态显示,同时支持串口中断接收(IR1)和手动按键中断。硬件采用8259中断控制器、8253定时器和8255数码管驱动芯片。程序编译通过Windows终端完成,使用串口助手下载测试。测试时可手动触发S6按键中断或通过串口发送数据,数码管将实时更新显示。该例程完整演示了中断处理、定时控制和动态显示的综合应用。
2025-12-15 10:29:03
434
原创 __acrtused 是什么
摘要:__acrtused=9876h是Microsoft C/C++运行时库(CRT)的特殊标记符号,用于确保程序正确链接CRT初始化代码。该魔法数字9876h(39030)告知链接器需要CRT支持,常见于混合汇编/C语言项目中。在MASM/TASM汇编文件中声明此符号可解决链接器优化掉必要启动代码的问题,特别适用于控制台程序或使用CRT函数的场景。现代替代方案可使用_fltused=0x9876声明。这个机制对解决CRT初始化相关的链接问题很有帮助,但具体行为可能随Visual Studio/Windo
2025-12-14 21:10:57
190
原创 8088单板机 NASM汇编实验方法与步骤
摘要:本文介绍了基于Intel 8259中断控制器的测试程序实现。程序通过手动触发IR0中断,在中断服务程序中控制LED灯状态反转。硬件方面使用端口地址0x800控制LED,0x400控制8259。程序包含初始化8259、设置中断向量、中断服务程序等模块,采用8086模式,通过发送EOI命令结束中断。测试时需通过串口下载程序,触发按键后观察LED状态变化。该例程演示了8259中断处理的基本流程,包括中断屏蔽设置、中断向量配置和中断响应处理等关键环节。(149字)
2025-12-14 14:51:49
519
原创 用NASM为8086处理器编写的子程序,将16位整型数转换为ASCII字符串 ----测试
本文描述了一个8086处理器上的16位整数转ASCII字符串子程序实现。实验使用NASM汇编语言编写,包含NMI中断处理、串口通信和LED控制功能。程序通过8088单板机测试,主要实现了:1) 带符号16位整数转换(支持负数);2) 无符号16位整数转换;3) 串口数据发送功能;4) NMI中断计数功能。测试代码展示了如何调用转换函数并通过串口输出结果,同时包含LED状态切换和200ms延时控制。该实现适用于嵌入式系统开发,可作为底层I/O和数据处理的基础模块。
2025-12-04 15:17:25
137
原创 用NASM为8086处理器编写的子程序,将16位整型数转换为ASCII字符串
摘要:这段代码实现了16位有符号/无符号整数到ASCII字符串的转换(itoa_16/uitoa_16)。输入AX寄存器存放要转换的整数,DS:DI指向至少7字节的输出缓冲区。函数处理负数时会添加前导'-'号,使用栈反转数字顺序,最终生成以'$'结尾的DOS兼容字符串。无符号版本uitoa_16只处理正数。示例展示了如何调用该函数并通过DOS中断显示结果。该实现不保存寄存器状态,适合在汇编程序中进行数字到字符串的转换。
2025-12-02 18:58:31
167
原创 nasm汇编器的局部标号
在NASM汇编中,局部标号(local labels)是一种以点.开头的标号,它们只在当前全局标号(非局部标号)的作用域内有效。这使您可以在不同部分重用相同的局部标号名称,而不会引起冲突。:局部标号只在最近的非局部标号(不以.开头的标号)内有效。:可以在不同的全局标号中使用相同的局部标号名。:汇编器会自动将局部标号与最近的全局标号关联。
2025-12-02 16:16:38
212
原创 用nasm为intel8088·编写一个NMI中断服务程序,没触发一次,计数器自动增加1,并且通过串口输出计数器数值
摘要:该8088汇编程序实现了一个NMI中断计数器,当非屏蔽中断触发时自动增加计数值并通过串口输出。程序包含NMI中断服务程序(nmi_isr)处理中断、串口初始化及通信功能(9600波特率)、16进制数值转换以及中断向量设置。主要流程包括初始化串口、设置NMI中断处理程序,在中断发生时计数器自增并转换为十六进制格式通过COM1发送。程序可作为COM文件运行,每次NMI触发都会输出当前计数值。
2025-11-29 09:44:11
188
原创 NMI手动触发8088中断异常原因分析
本文介绍了一个基于8088处理器的实验程序,通过8255芯片控制LED显示和按键检测。程序初始化8255芯片并设置NMI中断处理程序,当按键K4被按下时触发NMI中断,在串口打印"key0 event happen!"信息。最初由于按键抖动导致多次中断触发,后改用INT 2指令实现软件触发NMI中断,确保每次只触发一次中断。程序还包括LED控制功能,可以交替点亮LED,并通过串口输出调试信息。该实验是《在做中学微机原理》课程的示例,展示了8086处理器编程、硬件接口控制及中断处理的基本方
2025-11-29 09:24:56
371
原创 Intel8259中断测试实验步骤
这段代码实现了一个基于中断的LED控制程序。程序初始化8259中断控制器,设置中断向量为20H,初始化LED状态为全亮。中断服务程序负责反转LED状态并发送EOI命令。初始化过程包括:关中断、设置中断向量、配置8259(ICW1-ICW4)、设置中断屏蔽字(仅允许IR0)和初始化LED端口。主程序通过hlt指令等待中断,当中断发生时,执行ISR反转LED状态。代码采用x86汇编编写,适用于COM文件格式(起始地址0x100),最后以55H填充剩余空间。
2025-11-24 10:12:54
190
原创 每个学习计算机的人,都想拥有一块能跑的8086原型机
摘要:文章讲述了作者对8086处理器的特殊情感,将其视为计算机世界的本源与朝圣对象。在当今高度抽象的编程环境中,8086以其简单透明的架构成为理解计算本质的桥梁。这块1978年诞生的芯片不仅是技术教学的理想标本,更是一部"可通电的计算机史",让人得以触摸电子世界最原始的脉动。作者认为,在云计算和API盛行的时代,亲手操控8086系统带来的完全掌控感,是抵御技术虚无、重获创造本真的珍贵体验,也是每个计算机学习者心中永恒的精神家园。(149字)
2025-11-23 22:00:13
512
原创 8088单板机NASM 8259中断测试程序
这篇文章摘要描述了使用x86汇编语言编写的LED控制程序。程序通过8259中断控制器处理IR0中断,在中断服务程序中反转LED状态并输出到0x800端口。初始化部分设置了中断向量(20H),配置8259的触发方式和中断屏蔽,并初始化LED为全亮状态。主程序通过HLT指令等待中断,形成一个简单的LED状态切换控制程序。
2025-11-23 19:36:35
170
原创 微机原理实验更多使用Intel8088的原因 不采用Intel8086的原因
8086和8088芯片在微机原理实验中常被混用,但实验设备更多采用8088芯片。主要原因在于8088的8位数据总线降低了硬件成本与复杂度,能直接兼容廉价8位外设,同时其编程模型与8086完全一致,不影响教学效果。此外,8088因IBMPC的广泛应用形成了成熟的硬件生态和教学资源体系。尽管性能较低,但实验任务对速度不敏感,使用8088反而能更直观展示总线操作原理。因此,虽然统称"8086实验",实际实验设备多基于8088芯片。
2025-11-23 13:53:49
1170
原创 8088单板机 NMI中断死机显示乱码的解决方案
文章摘要:程序在NMI按键时卡死的原因是单板机ROM BootLoader版本不一致导致程序加载地址不同。原项目基于01F0:0100地址编写,若加载到0000:2000地址会产生数据寻址错误。解决方法包括更新BootLoader或修改RTL.ASM文件,调整数据段和中断向量地址。关键依据是两个逻辑地址01F0:0100和0000:2000指向同一物理地址02000H,通过物理地址转换公式Y=01F0H*16+X可实现地址偏移修正。
2025-11-22 20:25:07
407
原创 visual studio C# 如果只提供某个自建dll的命名空间,但是不添加引用,编译会通过吗
摘要:仅使用using语句引入DLL命名空间而缺少实际程序集引用会导致编译失败。正确的做法是:1)通过解决方案资源管理器添加DLL引用;2)配合使用using语句。特殊情况下,即使DLL在GAC中仍需显式引用,且项目引用与DLL引用是两种不同机制。编译成功必须同时具备类型定位(using)和程序集引用两个条件。
2025-11-04 13:43:11
430
原创 windows环境下在Bochs中运行Linux0.12系统
本文介绍了在Bochs模拟器中运行Linux 0.12系统的步骤:首先从GitHub下载预配置的Bochs系统包,解压安装后启动模拟器以软盘方式运行Linux 0.12;然后需要更换A盘映像文件加载Linux 0.12的根文件系统,最后完成系统加载并进行测试。该过程为研究早期Linux系统提供了便捷的模拟环境。
2025-11-02 16:11:39
182
原创 bochs虚拟机使用总结
摘要:软件安装后运行示例提示无法加载映像文件,经多次排查未果。换两台电脑测试仍出现相同错误。卸载后重新下载前期版本再次测试,问题解决。
2025-10-30 09:01:24
194
8088单板机原理图+PCB板图+Boot代码
2022-05-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅