- 桌面系统:Ubuntu (30.13%)
- 服务器:Debian (24.24%)
- 系统恢复盘:BackTrack (43.48%)
- 数据库:MySQL(60.81%)
- 办公套件:OpenOffice.org (90.76%)
- 浏览器:Firefox (65.21%)
- 桌面环境:Gnome (41.96%)
- 窗口管理器:Compiz (23.10%)
- 即时通讯:Pidgin (48.74%)
- 邮件客户端:Thunderbird (53.48%)
- 虚拟机产品:VirtualBox (67.43%)
- 音频播放器:Amarok (38.81%)
- 音频编辑器:Audacity (77.26%)
- 视频播放器:VLC (46.05%)
- 视频编辑器:FFmpeg (21.94%)
- 多媒体工具:GStreamer (32.84%)
- 图像软件:GIMP (66.48%)
- 网络安全:Nmap Security Scanner (29.85%)
- 主机安全:SELinux (39.26%)
- 网络监视:Nagios (51.11%)
- IDE/网页开发:Eclipse (23.28%)
- 文本编辑器:vim (35.29%)
- 文件管理器:Nautilus (24.92%)
- 开源游戏:Battle for Wesnoth (15.45%)
- 编程语言:Python (27.59%)
- 备份工具:rsync (48.99%)
- 开源内容管理系统/博客平台:WordPress (45.20%)
Archive for ‘未分类’ Category
在家里闲着实在憋屈。想接触下Python,用我弱弱的手机找了个《Python简明教程》大致地过了一遍。找了家网吧想下个Python安装程序练练手,结果发现Python.org居然被墙了!幸好前几天殷殷给了一个翻墙用的包GAppProxy,马上就派上用场了。翻将过去,就看到那两条亲密无间的“蛇”了。
F**K!难道G*F*W连个编程语言都不放过?Python是个不和谐的语言?可能吧,上面的翻墙工具就是Python吐出来的。Python另一个被墙的理由就是Python.com了,这是一个不河蟹的网站,简直就是十分不和谐……
附上GAppProxy.rar。加压后运行gui.exe,设置代理服务器为127.0.0.1:8000(端口可以自己设定)。
三年自然灾害时期,中国遭遇大灾,对外宣传却是“形势一片大好”。某国元首来中国访问,当然是会见最高首长,再去工厂、部队、农村等地访问一番。外交无小事,某省接到通知,各级政府做好充分准备,乡里大食堂的案板上,堆满作秀需要的菜码儿。重要人物总是在路上,元首一行不仅迟迟不到,而且传话说,要改道而行。新鲜的猪肉,经不起一拖再拖 ,处在变质的边缘。领导拍板,立即将大肉加上大料卤透,然手让农民们坐上拖拉机,快“机”加鞭,到元首要经过的公路边食用以此制造一种农民兄弟们过上“顿顿能吃肉,家家有余粮”的假象。于是,近百个精挑细选、根正苗红的农民兄弟,手持招待外宾用的青花细瓷碗,蹲在路边,看到元首车队离路边仅数十米之遥时,一基层领导大喝一声“吃”,近百号大汉“呼哧呼哧”,连肉带面,吃了一个底儿朝天。事后,农民兄弟们的家小,对外国元首和领导同志们甚是感激,这场戏的布置,让村里的老老小小都吃到了久违的猪肉。原因是,农民兄弟们为了让家小尝尝猪肉,边吃边把肉往口袋或衣袖里藏。
长安街,似乎还“没几个人”知道,Google和Baidu也知不道。
本程序利用PIC18单片机实现了对EEPROM的读写。应用背景是”汽车里程表”,简单介绍下程序功能和流程。
单片机接受来自RA4管脚的计数脉冲信号,应用中这个脉冲信号通常由一个传感器来产生,计数脉冲被设定为上升沿触发。计数器溢出时,需要更新一个用于存储当前里程的RAM寄存器单元COUNT,可以理解为车轮转了一定圈数后,里程表的增加一定的里程数。
RB0管脚用来接收一个外部中断信号,接收到中断信号后,在中断服务程序中将COUNT的值即当前里程数保存至EEPROM的00H单元。这样可以配合外部电路实现当单片机掉电时自动保存里程表数值的功能,即汽车熄火时保存里程表,以减少对EEPROM的读写次数。
单片机启动时,首先应该到EEPROM的相应单元读取里程表的当前值,并在此基础上进行累加。
程序中为了调试方便,还将COUNT的数值同步地通过8个LED以二进制形式较直观地显示了出来。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | LOOP BCF INTCON, T0IF ; 清TMR0中断标志 MOVLW TMR0B MOVWF TMR0L ; 装入计数初值 253 BSF T0CON, TMR0ON ; 启动计数器 TEST BTFSS INTCON, T0IF ; 检测TMR0是否溢出 GOTO TEST INCF COUNT, F ; 计数加一 MOVFF COUNT, PORTD ; 输出,显示 GOTO LOOP WIRT_EE ; 写EEPROM BCF EECON1, EEPGD BCF EECON1, CFGS ; 设定EECON1控制寄存器 BSF EECON1, WREN ; EEPROM写使能 BCF INTCON, GIE ; 写EEPROM时需要关闭一切中断 |
使用PIC18单片机的ADC转换模块对RA0口输入的模拟电压信号进行转换,然后通过PORTD端口输出,而这里与PORTD对应引脚相连接的是8个LED。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | list P = 18F452 ;指明单片机型号为PIC18F452 #include P18F452.INC ;包含一个头文件,其中定义了一些端口及一些特殊寄存器的地址 org 0000h ;PIC上电时从0000h单元开始执行 goto main ;跳转到主程序 ORG 0008H ;中断向量入口 BTFSS PIR1, ADIF ; AD转换完成中断 RETFIE GOTO AD_ISR ORG 0030H ;主程序定位 MAIN CLRF TRISD ;设定D口方向为输出 CLRF PORTD ;设定C口方向为输出 BSF TRISA, 0 ; 使用AN0输入 MOVLW 81H ;FOSC/32, AN0, 开启 MOVWF ADCON0 MOVLW 0EH ;左对齐,AN0为模拟输入 MOVWF ADCON1 ;VDD & VSS为参考电压 BCF INTCON, TMR0IF BCF PIR1, ADIF ;清AD中断标志位 BSF PIE1, ADIE ;开AD中断 BSF INTCON, PEIE ;开外围中断 BSF NTCON, GIE ;开总中断 MOVLW C7H ;TMR0 8位,分频比为1:256 MOVWF T0CON LOOP CALL DELAY BSF DCON0, GO ;开启 A/D转换 GOTO LOOP DELAY BTFSS NTCON, TMR0IF ; 等待延时,采样保持 GOTO DELAY BCF NTCON, TMR0IF RETURN AD_ISR ;AD转换完成时调用的中断服务程序,将转换结果输出 ORG 0200H MOVFF ADRESH, PORTD ;显示转换结果 BCF PIR1, ADIF ;清AD中断标志位 RETFIE END ;程序结束 |
海明码的目的是能够纠正一位误码。假设信息码共有 n 位,海明码共有 h 位,那么总共的码长为 n + h 位。为能检测出 n + h 位编码中其中一位的错误,海明码必须能够表示至少 n + h + 1 种状态,其中 n + h 种表示 n + h 位编码中有一位错误,另外还需要一种来表示整个编码正确无误。则海明码的长度需要满足下列关系:
PIC的汇编实在诡异,有点被颠覆的感觉,原来汇编指令还可以这么来设计,原来汇编指令怎么设计都可以。最OOXX的一条指令就一个实现短转移的指令叫做BRA,意为BRAanch,看到这条指令的时候,我都诧异了,奶罩能做什么?哇塞!居然还能跳转!?奶罩居然可以无条件跳转?!Orz……另外PIC指令把单词缩写运用的淋漓尽致,譬如指令BTFSS,是一条位测试加条件跳转指令:BTFSS = Bit + Test + FileRegister + Skip + Set,用法:BTFSS R1, 0003h, 寄存器R1的第3位为1时跳过下一条指令。真是震撼!
最后附上PIC18的中断体系硬件结构图,出自陈育斌老师的手笔:
图示是PIC 18单片机中定时/计数器的结构图,PIC18是一种8位的单片机,但它的定时/计数器(的寄存器)却是16位的,所以为其装初值的时候就要分高低字节分别装载。于是问题就来了,由于定时计数器一般是连续工作,需要经常进行重装,如果对一个正在工作的定时计数器进行重装的话,就会产生高低字节不同步的状态,这是一种潜在的错误,尽管这种错误发生的概率很小。为了防止这种错误的发生,PIC单片机设计者采用了上图所示的双缓存结构。其中,TMR0H’和TMR0L组成了一个真正的定时计数器,而TMR0H是一个临时寄存器只有TMR0L的写信号有效时它才能被装入TMR0H’。当需要重装定时器时,首先应该将16位定时/计数的初值的高8位装入TMR0H临时寄存器,然后在向TMR0L写入低8位时由于TMR0L写信号有效,TMR0H也被同步地装入TMR0H’。这样,定时计算器就可以正确的工作,这就是硬件的双缓冲。
下面的图片是一个LED显示屏,显示的这个等式明显是错误的,原因是某个显示屏的像点坏了,你能找出来吗?我找了10分钟,最终还是没看出来。

答案其实并不简单……坏点……并不都是该亮的没亮,还有可能是不该亮的却亮了……

