|
本帖最后由 daniu 于 2014-12-27 18:25 编辑
- ;============================================================
- ;程序编写人:兰建
- ;编写地点:51hei培训机构
- ;时间:5月23日下午 星期六
- ;功能:本程序利用定时器中断0方法,实现P0口数码管0-9的闪烁功能
- ;=======================开始初始化================================
- SHUCHU EQU P0 ;定义P0口为输出口
- PIANXUAN EQU P2 ;设置P2.0为片选
- SHUZI EQU 30H
- CISHU EQU 20 ;循环20次数为1秒
- MODE EQU 01H
- C_BIT BIT 20H.0 ;数码管闪烁标志位设置
- ;========================程序开始================================
- ORG 00H ;程序开始
- LJMP START ;跳到START
- ORG 0BH ;定时器中断0入口地址
- JMP T0_1 ;跳到定时器中断0服务程序
- ORG 0030H ;入口地址
- START:MOV R5,#CISHU
- CALL INIT ;开定时器中断0,设置定时初值
- MOV PIANXUAN,#00 ;片选初始化
- MOV SHUZI,#00 ;数码管显示初始化
- MOV DPTR,#TAB
- MOV SHUZI,#00
- MOV SP,#30H ;移开指针
- ;==========================主程序=================================
- MAIN:JNB C_BIT,L0 ;判断数码管闪烁标志位,为1数码管点亮,为0灭
- MOV A,SHUZI
- CALL CHABIAO
- CALL XIANSHI
- JMP LL
- L0:MOV SHUCHU,#0FFH ;数码管灭
- LL:JMP MAIN ;返回主程序
- ;========================中断设置子程序============================
- ;输入:无
- ;输出:无
- ;实现的功能:初始化定时器0,初值设置
- ;==================================================================
- INIT:MOV TMOD,#MODE ;定时器1工作方式1
- MOV TL1,#0B0H ;设定时初值
- MOV TH1,#3CH
- MOV IE,#82H
- SETB TR0
- RET
- ;====================定时器中断0服务子程序=========================
- ;输入:P0
- ;输出:P0
- ;实现的功能:定时1S后P0口取反
- ;===================================================================
- T0_1:MOV TL0,#0B0H
- MOV TH0,#3CH
- DJNZ R5,L1
- CPL C_BIT
- JB C_BIT,L2
- INC SHUZI
- MOV A,SHUZI
- CJNE A,#10,L2
- MOV SHUZI,#00
- L2:MOV R5,#CISHU
- L1:RETI
- ;========================查表子程序===========================
- ;输入:"DPTR"
- ;输出:"A"
- ;实现的功能:把A的数输出到P0口显示
- ;=============================================================
- CHABIAO:MOVC A,@A+DPTR
- RET
- ;========================显示子程序===========================
- ;输入:"A"
- ;输出:"P2口"
- ;实现的功能:把A的数输出到P0口显示
- ;=============================================================
- XIANSHI:MOV SHUCHU,A
- RET
- ;==========================共阳查表数据=============================
- TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
- ;============================程序结束===============================
- END
复制代码
|
|