单片机动态扫描接口及程序设计
为2000个周期,约2170微秒(11.0592M) MOV TL0,#LOW(65536-2000) SETB FIRST SETB SECOND ;关显示 MOV A,#DISPBUFF ;显示缓冲区首地址 ADD A,Counter MOV R0,A MOV A,@R0 ;根据计数器的值取对应的显示缓冲区的值 MOV DPTR,#DISPTAB ;字形表首地址 MOVC A,@A+DPTR ;取字形码 MOV P0,A ;将字形码送P0位(段口) MOV A,Counter ;取计数器的值 JZ DISPFIRST ;如果是0则显示第一位 CLR SECOND ;不然显示第二位 AJMP DISPNEXT DISPFIRST: CLR FIRST ;显示第一位 DISPNEXT: INC Counter ;计数器加1 MOV A,Counter DEC A ;如果计数器计到2,则让它回0 DEC A JZ RSTCOUNT AJMP DISPEXIT RSTCOUNT: MOV Counter,#0 ;计数器的值只能是0或1 DISPEXIT: POP PSW POP ACC RETI DELAY: ;延时130毫秒 PUSH PSW SETB RS0 MOV R7,#255 D1: MOV R6,#255 D2: NOP NOP NOP NOP DJNZ R6,D2 DJNZ R7,D1 POP PSW RET DISPTAB:DB 28H,7EH,0a4H,64H,72H,61H,21H,7CH,20H,60H END 从上面的单片机程序能看出,动态显示和静态显示相比,程序稍有点复杂,不过,这是值得的。这个程序有一定的通用性,只要改变端口的值及计数器的值就能显示更多位数了。
- MCS-51系列单片机结构化程序设计探讨(04-20)
- 状态机在单片机程序设计中的应用(05-01)
- ARM处理器的位置无关程序设计(09-19)
- 基于分布式处理技术的物联网数据库设计(05-21)
- 模块化管理和设计(12-01)
- 马踏棋盘的实现(12-01)