找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3487|回复: 55
打印 上一主题 下一主题
收起左侧

什么是单片机的“手动编程”?

  [复制链接]
跳转到指定楼层
楼主
本帖最后由 海阔天空8 于 2026-3-12 10:18 编辑

首先“手动编程”这个词也不是我发明的。手动编程究竟存不存在?它和单片机有没有关系?折腾了多年我对单片机的理解进展不大。是到了请高人给“手动编程”下个准确定义的时候了。
现在我理解的“手动编程”的产生,是在电脑还没普及的年代不用编程器通过硬件手段对单片机裸芯片里的存储器写入数据(0.1),由单片机的输出脚输出的过程。这个过程不需要先对单片机烧写软件程序。它和单片机一般使用要由电脑通过编程器先对单片机裸芯片烧写程序,单片机才能运行程序不同。实质上不是单片机运行而是单片机里的存储器运行。
折腾来折腾去没什么进步,请各位老师指正,真的感谢!

补充内容:不用电脑,不用编程器,不会C语言,用几个按键,开关给单片机2051的不同地址“写入”不同的数据(“写入”状态),然后设置成“读出”状态,写入不同地址的数据就能够在单片机的8个输出口按地址顺序输出写入的数据(0/1电平)。
我现在认识到,这不是给单片机编程(单片机编程要通过预先烧录到d单片机里的软件完成,单片机裸芯片办不到。),倒像是给单片机里的存储器编程?如果说学单片机误入歧途我不反对。感谢大家!

是到了给“手动编程”做一个准确,具体定义的时候了。
各位老师的精彩回答摘录:
-----手动编程是存在过的。
-----看来楼主是要用硬件的思路来理解软件。
-----跟单片机说话,要说它能听懂的话,它能听懂的话就是“正确的。固件”。
-----不借助电脑,把程序写纸上。(这才是正儿八经的手动编程
-----手动编程是几十年前没有电脑,自己用手动输入高低电平来实现编程的一种办法,非常浪费时间,极度容易出错。
这种方法虽然能让单片机“机械性”的输出,但它输出的只是你预设的最终结果
-----不用电脑             对,的确不用电脑。
不用编程器          不对,那个东西本身就是编程器,只不过是“半自动”的。
不要计算机语言    不对,用的是汇编语言
-----“要解释AT89C2051能不能手动编程很简单,能,但为啥不这么做,因为效率极低”-
-----真正的编程,其实是给单片机写软件那个环节(就是生成那一堆0和1的过程)
-----一个人只会说汉语,另一个人只会说英语,除了大眼瞪小眼,两个人能沟通吗?
-----“”单片机本质来说,不运行代码的话,本身就是一个存储器“”—
第二个问题:存储器手动编程”和单片机编程有本质的区别(单片机需要软件运行存储器不需要)
给存储器写入特定的数据,其实就是代码编程
-----有意义的数据虽然也都是0和1,但不是你随便写的,得符合单片机的要求。


最简手动烧写2-1.jpg (396.31 KB, 下载次数: 0)

最简手动烧写2-1.jpg

2051擦写读.jpg (1.07 MB, 下载次数: 0)

2051擦写读.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

56#
ID:460466 发表于 2026-3-12 13:03 | 只看该作者
jhczy 发表于 2026-3-6 09:00
还有在纸袋上打孔的,也叫“手动编程”吧

纸带上打孔,记得见过?那就是由纸带输入0或1吧?孔能使光线通过设为1(或0)纸通不过光线设为0(或1)?是这个意思吧?
回复

使用道具 举报

55#
ID:460466 发表于 2026-3-12 12:58 | 只看该作者
xiaocake 发表于 2026-3-5 21:47
正常情况,烧写进单片机里面的数据,一般称为固件,相当于单片机的“软件”。实质也都是一堆0和1。

你之 ...

“”你之前手动写进单片机又读出来的那一堆0和1,只能称为乱码”---------------------------对于某种单片机来讲他不认识所以是乱码。但“那一堆0和1”是固定的也,可以认为有一定的规律?
回复

使用道具 举报

54#
ID:460466 发表于 2026-3-12 08:46 | 只看该作者
想后看开 发表于 2026-3-10 15:45
当年的手动编程是相当麻烦的,浪费时间,浪费精力,容易出错。知道就行了,没必要深究,有电脑有K软件代替 ...

您这样一说倒是符合实际。
回复

使用道具 举报

53#
ID:460466 发表于 2026-3-12 08:40 | 只看该作者
fei2008 发表于 2026-3-11 09:24
不用晶振,外接脉冲就可以,可以自动复位,比如写一个流水灯程序靠脉冲频率控制闪烁节奏,也可以在花样数据 ...

外接脉冲分为单脉冲和自动脉冲。单脉冲是加到地址端,地址每次累加1后写入数据,自动脉冲是读出每个地址数据的,,,
回复

使用道具 举报

52#
ID:460466 发表于 2026-3-12 07:45 | 只看该作者
发表于 2026-3-11 11:03
不用电脑              对,的确不用电脑。

不用编程器          不对,那个东西本身就是编程器,只不 ...

“”不用编程器          不对,那个东西本身就是编程器”===========为什么非叫“编程器”呢?不就是给有关引脚设置成不同的电压(0或1)对不同的“地址”写入不同的数据后“固定”然后设置成“读出”状态就可以看到输出端按地址输出一系列0和1吗?
“计算机语言”?就是和电路对话的一种规则吗?“汇编语言”就是人给起的一个名称而已?
回复

使用道具 举报

51#
ID:460466 发表于 2026-3-12 07:37 | 只看该作者
xiaocake 发表于 2026-3-11 11:08
你在这个帖子里面问这个问题,有点不合时宜。这个帖主对单片机都不了解。

我就是问这种“手动编程”能不能算作使用单片机的主流方法之外的一种方法?老师们总是回答我“今天天气好”!您说我能听懂吗?
回复

使用道具 举报

50#
ID:123917 发表于 2026-3-12 00:38 | 只看该作者
xiaocake 发表于 2026-3-11 11:08
你在这个帖子里面问这个问题,有点不合时宜。这个帖主对单片机都不了解。

哈哈,如果可以,就能解密了
回复

使用道具 举报

49#
ID:1152952 发表于 2026-3-11 13:08 | 只看该作者
确实不需要使用汇编语言,这点的理解上你还真不如帖主
回复

使用道具 举报

48#
ID:102168 发表于 2026-3-11 11:08 | 只看该作者
wjfw 发表于 2026-3-10 09:24
你好,如果加密了,按你的设置,还能显示对应地址的数据吗?

你在这个帖子里面问这个问题,有点不合时宜。这个帖主对单片机都不了解。
回复

使用道具 举报

47#
ID:102168 发表于 2026-3-11 11:03 | 只看该作者
本帖最后由 xiaocake 于 2026-3-11 11:09 编辑
海阔天空8 发表于 2026-3-9 20:31
不管怎么说,不用管它叫什么名称,它确实是一种不用电脑,不用编程器,不用计算机语言的控制单片机输出端 ...

不用电脑              对,的确不用电脑。

不用编程器          不对,那个东西本身就是编程器,只不过是“半自动”的。

不要计算机语言    不对,用的是汇编语言,准确说是51系列单片机的汇编语言,然后是人工翻译成二进制码(就是一堆0和1),之后才烧写的二进制码。
回复

使用道具 举报

46#
ID:1152952 发表于 2026-3-11 09:24 | 只看该作者
不用晶振,外接脉冲就可以,可以自动复位,比如写一个流水灯程序靠脉冲频率控制闪烁节奏,也可以在花样数据里设定,哎你们这些从软件转过来的,拜托学学数字电路好不好
回复

使用道具 举报

45#
ID:102168 发表于 2026-3-11 09:18 | 只看该作者
海阔天空8 发表于 2026-3-10 12:51
“”不借助电脑,把程序写纸上。(这才是正儿八经的手动编程)“”---------------如此说来也算编程?( ...

那个最简电路是为了满足你“手动编程”的愿望。如果用上晶振,你就无法“手动”完成了。

然后最简电路只是为了给单片机“烧写”软件,AT89C2051要运行“软件”,得给他补充外围电路(晶振,复位)。

这种基础的问题,但凡你之前用点心也不至于现在才问出来。
回复

使用道具 举报

44#
ID:140411 发表于 2026-3-11 08:45 | 只看该作者
海阔天空8 发表于 2026-3-9 20:31
不管怎么说,不用管它叫什么名称,它确实是一种不用电脑,不用编程器,不用计算机语言的控制单片机输出端 ...

这种方法虽然能让单片机“机械性”的输出,但它输出的只是你预设的最终结果,没有“灵气”,它不能根据读入的数据进行各种逻辑运算,也不能自主的判断和分析是否符合某种条件后实时动态的输出我们想要的最佳值。
回复

使用道具 举报

43#
ID:460466 发表于 2026-3-10 20:32 | 只看该作者
本帖最后由 海阔天空8 于 2026-3-10 20:37 编辑
hhdsdy 发表于 2026-3-10 20:18
我也不会英文,岁数也一样不小了,但我不会像你这样倚老卖老,有些东西还真的要用英文,RAM、ROM等用中文 ...

O(∩_∩)O哈哈~用词不当,,,,,
回复

使用道具 举报

42#
ID:88256 发表于 2026-3-10 20:18 | 只看该作者
海阔天空8 发表于 2026-3-6 08:45
eprom是什么?你不解释我怎么会明白?难怪现在很多呼吁外语要减分,,,,,,,,,,,,可擦除可编程 ...

我也不会英文,岁数也一样不小了,但我不会像你这样倚老卖老,有些东西还真的要用英文,RAM、ROM等用中文就复杂多了,C语言的“C”你要用什么代替?还有很多软件的名称,真的是无法用中文直接替代的,总不能因为你不学英文就给你创造一些中文出来代替吧?当然如果你是邻国那位世传领袖那就不一样了,可惜你不是。
回复

使用道具 举报

41#
ID:460466 发表于 2026-3-10 19:55 | 只看该作者
fei2008 发表于 2026-3-10 16:21
现在喜欢机器码编程的人大有人在,网上一块能用机器码编程的51板子可不便宜
昨天还刷了个视频有人在Bendix ...

是吗?不用晶振?您具体讲讲好吗?
回复

使用道具 举报

40#
ID:460466 发表于 2026-3-10 19:46 | 只看该作者
想后看开 发表于 2026-3-10 15:45
当年的手动编程是相当麻烦的,浪费时间,浪费精力,容易出错。知道就行了,没必要深究,有电脑有K软件代替 ...

您这样一说我就明白了,这是当年玩单片机的一种早已淘汰了的方法。它和目前主流方法是根本不同的,但他的特点是不用电脑,编程器,计算机语言是它的特点。历史上确实存在过,,,,,,,,,,,,所以各位老师给我用目前的主流方法讲解,根本听不懂,也就不奇怪了。
回复

使用道具 举报

39#
ID:460466 发表于 2026-3-10 19:27 | 只看该作者
发表于 2026-3-5 21:47
正常情况,烧写进单片机里面的数据,一般称为固件,相当于单片机的“软件”。实质也都是一堆0和1。

你之 ...

你之前手动写进单片机又读出来的那一堆0和1,只能称为乱码,总不能你随意写一堆0和1就成了单片机能运行的软件吧。-------------您这句话的意思是,“手动写进单片机又读出来的那一堆0和1”单片机有自己的规则,它不认识,对单片机来说不符合它的某种规则来说就是乱码(或许对其他规则来讲就不是乱码?),这有点和电脑打开WORD文件的方式不同,有时就是一堆奇怪的乱码。“”你之前手动写进单片机又读出来的那一堆0和1,只能称为乱码”=============“”你之前手动写进单片机又读出来的那一堆0和1,对某种单片机来讲只能称为乱码,---------可以这样说吗?
回复

使用道具 举报

38#
ID:1152952 发表于 2026-3-10 16:21 | 只看该作者
现在喜欢机器码编程的人大有人在,网上一块能用机器码编程的51板子可不便宜
昨天还刷了个视频有人在Bendix G15上用打孔带写程序
即便不用单片机玩机器码,pld,cpld不照样玩,同样也不需要晶振,玩什么不都是玩
回复

使用道具 举报

37#
ID:412177 发表于 2026-3-10 15:45 | 只看该作者
当年的手动编程是相当麻烦的,浪费时间,浪费精力,容易出错。知道就行了,没必要深究,有电脑有K软件代替,节约时间,节约精力,不容易出错,不是更好吗?
回复

使用道具 举报

36#
ID:468878 发表于 2026-3-10 15:05 | 只看该作者
不要想什么手动编程了既然想学单片机,就好好按新思路学。手动编程是几十年前没有电脑,自己用手动输入高低电平来实现编程的一种办法,非常浪费时间,极度容易出错,现在可能也基本没几个人掌握这种技能了。按照现在的方法:在KEIL 软件写C代码,再把C代码编译成HEX文件,再通过烧录器,把HEX文件烧录到单片机,单片机就能根据程序的设置工作了。假如在单片机P1.0口外接一个LED,如何让这个LED闪烁起来,就写如下代码就行。
// 包含STC89C51寄存器定义头文件(不同编译器可能为reg51.h,效果一致)
#include <STC89C5xRC.H>  

// 延时函数:通过空循环实现简单延时(约500ms,晶振11.0592MHz)
void Delay500ms(void)  
{
    unsigned int i, j;
    for(i=500; i>0; i--)
        for(j=110; j>0; j--);
}

void main(void)  // 主函数,程序入口
{
    while(1)  // 无限循环,让LED持续闪烁
    {
        P1_0 = 0;  // P1.0口置低电平(假设LED负极接P1.0,正极接VCC,低电平点亮)
        Delay500ms();  // 保持点亮500ms
        
        P1_0 = 1;  // P1.0口置高电平,LED熄灭
        Delay500ms();  // 保持熄灭500ms
    }
}
回复

使用道具 举报

35#
ID:1064915 发表于 2026-3-10 14:19 | 只看该作者
海阔天空8 发表于 2026-3-10 12:51
“”不借助电脑,把程序写纸上。(这才是正儿八经的手动编程)“”---------------如此说来也算编程?( ...

开始还以为是勤学好问,现在知道就是个不学无术
回复

使用道具 举报

34#
ID:460466 发表于 2026-3-10 12:51 | 只看该作者
xiaocake 发表于 2026-3-6 11:09
过去给单片机写”软件“,是看单片机的手册,不借助电脑,把程序写纸上。(这才是正儿八经的手动编程)程 ...

“”不借助电脑,把程序写纸上。(这才是正儿八经的手动编程)“”---------------如此说来也算编程?(烧写模式)?如果烧写完成后检验模式无误后下一步就是运行”软件"了?这里的"软件“是指什么?我那板子上根本就没有晶振呀?就是靠地址进位完成运行的。(手动或自动)
回复

使用道具 举报

33#
ID:460466 发表于 2026-3-10 12:07 | 只看该作者
xiaocake 发表于 2026-3-5 21:47
正常情况,烧写进单片机里面的数据,一般称为固件,相当于单片机的“软件”。实质也都是一堆0和1。

你之 ...

“”单片机的功能是不是通过输出端口的不同时间,不同电位高低组合驱动执行电路完成的?“”如果是的话,我通过“”手动编程“”(或称别的方式不用电脑,编程器,计算机语言)如果能实现“”输出端口的不同时间,不同电位高低组合“”那叫不叫使用单片机?我大胆猜想单片机的使用模式可能不仅是一种?为什么就不能用不同的方式去实现单片机“”输出端口的不同时间,不同电位高低组合“呢?
回复

使用道具 举报

32#
ID:460466 发表于 2026-3-10 09:35 | 只看该作者
发表于 2026-3-5 21:47
正常情况,烧写进单片机里面的数据,一般称为固件,相当于单片机的“软件”。实质也都是一堆0和1。

你之 ...

您说的“写入”后的“”校验“”不就是看“”写入“”的数据正确不正确吗?如果“校验”无误接下来呢?就是叫输出口对执行电路完成一些工作了?比如按输出程序点亮LED,或控制别的执行线路?
回复

使用道具 举报

31#
ID:123917 发表于 2026-3-10 09:24 | 只看该作者
你好,如果加密了,按你的设置,还能显示对应地址的数据吗?
回复

使用道具 举报

30#
ID:460466 发表于 2026-3-10 08:03 | 只看该作者
hhdsdy 发表于 2026-3-9 21:17
看吧,又形成一个完美的闭环,大家又白操心了。

沟通就这么难吗?我只是说目前我就这认识水平而已!没有别的意思,更没有叫大家白操心的意思(可能效果是吧?),单片机有不同的玩法,所谓“手动编程”或许是一种非常规的玩法?就是某位老师说的用顽固的硬件思维方式来“”学“单片机,永远也学不会!在当时的条件下,“不用电脑”,“不用编程器”,"不用学语言",或许有很大的诱惑力吧?难怪我误入歧途出不来了?谢谢各位老师!
回复

使用道具 举报

29#
ID:88256 发表于 2026-3-9 21:17 | 只看该作者
hi等你 发表于 2026-3-9 08:59
我也下载看了一下,这个吴伟江写的手动编程现在已经是毫无用的资料,却成了永远压死楼主不能开窍的一张破纸 ...

看吧,又形成一个完美的闭环,大家又白操心了。
回复

使用道具 举报

28#
ID:460466 发表于 2026-3-9 20:31 | 只看该作者
hi等你 发表于 2026-3-9 08:59
我也下载看了一下,这个吴伟江写的手动编程现在已经是毫无用的资料,却成了永远压死楼主不能开窍的一张破纸 ...

不管怎么说,不用管它叫什么名称,它确实是一种不用电脑,不用编程器,不用计算机语言的控制单片机输出端的一种方法。
回复

使用道具 举报

27#
ID:996773 发表于 2026-3-9 08:59 | 只看该作者
我也下载看了一下,这个吴伟江写的手动编程现在已经是毫无用的资料,却成了永远压死楼主不能开窍的一张破纸
回复

使用道具 举报

26#
ID:460466 发表于 2026-3-8 18:04 | 只看该作者
xiaocake 发表于 2026-3-7 10:30
不是的,他已经会手动烧写了,只是他对自己在干啥还缺乏足够的认知。

关于手动编程,他最初是看了“ ...

“”单片机能听懂的话“--------------------------那就有单片机自己的一套规则了?这就涉及到各种“语言”了?也就是规则了?看来要对单片机编程还是绕不过“语言”的?
回复

使用道具 举报

25#
ID:460466 发表于 2026-3-8 18:00 | 只看该作者
xiaocake 发表于 2026-3-7 10:30
不是的,他已经会手动烧写了,只是他对自己在干啥还缺乏足够的认知。

关于手动编程,他最初是看了“ ...

“”把他自己随意编的数据写进单片机了,然后还能读出来,读出来是用8个LED显示。
如果他写进去的是单片机能运行的固件,那就是正常的单片机烧录了。--------------------------------------确实是这个意思(随意编的数据,比如各种“流水灯”)!用8个单片机输出端读出来的。哦!因为我写进去的数据单片机不认识。单片机不能运行。我怎样写进数据单片机才能认识逆呢?那就需要单片机先要装进软件(程序)吗?--------“”因为单片机裸芯片什么也不能干”这样理解对吗?
回复

使用道具 举报

24#
ID:460466 发表于 2026-3-8 17:48 | 只看该作者
xiaocake 发表于 2026-3-7 10:30
不是的,他已经会手动烧写了,只是他对自己在干啥还缺乏足够的认知。

关于手动编程,他最初是看了“ ...

目前他一直在“编程”(烧录和校验)这个环节转圈圈,单片机对他来说还是个黑盒子。-----确实是。
回复

使用道具 举报

23#
ID:102168 发表于 2026-3-7 11:14 | 只看该作者
海阔天空8 发表于 2026-3-7 09:53
“”正确的固件"是什么?单片机认识的才叫"正确“吗?

对,对,对。你前面自己都说过了,跟单片机说话,要说它能听懂的话,它能听懂的话就是“正确的固件”。
回复

使用道具 举报

22#
ID:102168 发表于 2026-3-7 10:30 | 只看该作者
ldasta 发表于 2026-3-7 02:45
他连烧录都还没学会呢


不是的,他已经会手动烧写了,只是他对自己在干啥还缺乏足够的认知。

关于手动编程,他最初是看了“89C2051的手动编程_吴伟江”这个文章(见附件)
文章介绍的是个半自动的烧录器,用了555还有几个数字逻辑芯片,线路其实比较复杂的,他没做。


然后我给他画了最简手动编程电路 (见附件)。里面切换烧录,校验,地址以及脉冲输入等操作,全都是人工用实物开关完成。
然后他就用那个最简手动编程电路,把他自己随意编的数据写进单片机了,然后还能读出来,读出来是用8个LED显示。


如果他写进去的是单片机能运行的固件,那就是正常的单片机烧录了。


目前他一直在“编程”(烧录和校验)这个环节转圈圈,单片机对他来说还是个黑盒子。




89C2051的手动编程_吴伟江.pdf (347.72 KB, 下载次数: 0)

89C2051编程说明以及最精简的手动烧写电路V1.pdf (168.26 KB, 下载次数: 0)



回复

使用道具 举报

21#
ID:460466 发表于 2026-3-7 09:53 | 只看该作者
xiaocake 发表于 2026-3-6 23:19
1。你看单片机手册了嘛?你知道正常的固件对应的数据是啥样的嘛?目前你不了解怎么写固件,所以现状是: ...

“”正确的固件"是什么?单片机认识的才叫"正确“吗?
回复

使用道具 举报

20#
ID:460466 发表于 2026-3-7 08:35 | 只看该作者
xiaocake 发表于 2026-3-6 23:09
手动烧写的结果,是把有用的数据写进单片机的存储器。目前你写进去的是无用的数据。

1.你写进去的数据 ...

1.你写进去的数据只是你认为有规律,单片机不认识,----------------------这话怎么理解?我写进去的数据,在读出状态可以从输出的io口输出的呀?怎么能说“不认识“?它记住了呀?
回复

使用道具 举报

19#
ID:814322 发表于 2026-3-7 02:45 | 只看该作者
xiaocake 发表于 2026-3-6 23:19
1。你看单片机手册了嘛?你知道正常的固件对应的数据是啥样的嘛?目前你不了解怎么写固件,所以现状是: ...

他连烧录都还没学会呢
回复

使用道具 举报

18#
ID:102168 发表于 2026-3-6 23:19 来自触屏版 | 只看该作者
海阔天空8 发表于 2026-3-6 21:13
我这个“手动编程”这3步似乎都完成了?8个输出/输入端写进去的输出电位高低顺序切换到“”读出“”可以 ...

1。你看单片机手册了嘛?你知道正常的固件对应的数据是啥样的嘛?目前你不了解怎么写固件,所以现状是:你还没能力写固件。
2。目前你已经会单片机固件烧录的过程了,只是还没有烧写过正确的固件。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表