凌晨两点。桌角那管松香还在慢悠悠地冒烟。我盯着手里那块焊点密得跟蜂窝似的开发板,屏幕上的十六进制代码正一行行往下滚,看得人眼晕。刚啃单片机那阵子,我整个人基本是懵的。数据手册里那些引脚定义,翻两页就犯困,手底下连个最简单的逻辑都搭不利索。正琢磨着要不干脆把板子扔抽屉吃灰,顺手抽开了李学海老师这本《PIC单片机实用教程:基础篇》。
说实话,刚拿起来真没抱啥指望。工科教材嘛,排版一股子上世纪的沉闷劲儿。我本来以为又是干巴巴的规格说明,外加几道应付考试的例题。往下翻了几页才发现,这书路子挺“笨”。它没一上来就甩给你一堆高大上的通信协议。没有。它老老实实从寄存器起头,一步步教你摸清芯片的底细。翻到“指令系统”那几节,我起初是真有点坐不住。汇编这玩意儿,不给人留半点余地。多敲个空格、少写行注释,程序立马跑飞。编译器给你报一堆红字,看得人血压飙升。作者写得那叫一个细,进栈出栈的时机,都掰着手指头给你数。我只能硬着头皮慢下来,对着书里的流程图,一行行把代码敲进去。这事儿大概就是这么个意思:你越急着求快,它越给你添堵。反倒静下心来跟代码死磕,心气儿慢慢就顺了。
最让我停下来琢磨的,是“中断逻辑”那章。书上列着标志位清零、优先级判断、现场保护这些词儿,读着确实枯燥。但我读着读着,忽然觉得这玩意儿跟咱们平时过日子简直一个模子。你正闷头赶工呢,突然来个急茬打断你。你得先把手里的活儿停一停,去救火。救完还得原路返回,顺便记着刚才卡在哪儿了。书里把这机械流程讲得明明白白。可真上手搭电路、调参数,才知道什么叫“纸上得来终觉浅”。我按着书里的例子焊线、改值,第一次触发中断那会儿,板子上的指示灯猛地一亮,又暗了。屏幕上的报错提示没了,心里头那点悬着的石头总算落了地。原来,图纸上那些干巴巴的时序图,真能变成指尖头实实在在跳动的东西。当然,我也得说一句,这套方法未必适合所有人。现在搞工程,谁还愿意花几十个小时死磕底层寄存器?能跑通就行。但如果你真想弄明白芯片到底怎么呼吸的,这笨功夫,恐怕躲不过去。
这书习题不少,作者反反复复强调“学练结合”。我以前总爱走捷径,恨不得翻两页书就能让电机转起来。仿真软件里跑个模型,就觉得自己是工程师了。它偏不惯着你。每章末尾直接甩上应用电路和调试步骤,逼着你去拿烙铁、插线、烧录,最后还得盯着示波器看波形。有回卡在定时器溢出上,我熬了大半夜。测出来的波形,全是毛刺。后来顺着书里的法子,把中断优先级重新排了一遍,嘿,居然通了。那一刻我突然咂摸过味儿来:工程师手里的仿真软件再牛,也替不了亲手去试错的那份笨功夫。书里提的那句“学者有趣”,大概就是指这种在一次次失败里摸清规律的时刻吧。可能作者自己也没想到,这种“慢节奏”的写法,反而在现在这个什么都求快的年代里,成了个异类。
合上书页,窗外天都泛白了。开发板上的小灯还在一下一下地闪,跟呼吸似的。我把它往旁边一推,想起自己以前总觉得技术就是冷冰冰的参数和公式。现在倒觉得,它更像是在跟人打交道。你肯花功夫陪它耗着,它才肯把硅片底下的逻辑,一点一点掏给你看。咱们平时总急着要个结果,却忘了在0和1之间,本来就得留出点空档,慢慢等一盏灯亮起来。这事儿急不得。你越催,它越不亮。