?? 13.lst
字號:
頁 1
01-29-03
02:14:23
偉福匯編器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 機器碼 源程序
;******************;
; 定時器程序 ;
; 采用89c2051 ;
; 2001.10 ;
;******************;
;
;******************
; 偽定義 ;
;******************
SL EQU 30H ;SL存放秒的個位數
SH EQU 31H ;SH存放秒的十位數
ML EQU 32H ;ML存放分的個位數
MH EQU 33H ;MH存放分的十位數
HL EQU 34H ;HL存放時的個位數
HH EQU 35H ;HH存放時的十位數
;
L0 EQU 36H ;L0~L3:顯示數據存儲器
L1 EQU 37H
L2 EQU 38H
L3 EQU 39H
DSPLYP EQU 3AH ;顯示數據指針(DISPLAY-POINT)
PLYTS EQU 3BH ;顯示次數計數器(DISPLAY-TIMES)
;
LPLMOD BIT 39H ;低兩位顯示方式(LOW-PLAY-MOD)
HPLMOD BIT 3AH ;高兩位顯示方式(HIGH-PLAY-MOD)
BRIGHT BIT 3BH ;DISPLAY子程序參數:亮滅指示位
;
TCOUNT EQU 3CH ;時間計數器(TIME-COUNT)
;
ADDRES EQU 3DH ;加1子程序參數
MAX EQU 3EH ;加1子程序參數
IFDEC BIT 20H ;BCD加法子程序參數
;
R_MOD EQU 3FH ;響鈴方式參數
;
LED4 BIT 30H ;發光管狀態位
BELL BIT P1.7 ;蜂鳴器
SWITCH BIT P3.7 ;繼電器
FKEY BIT P3.0 ;功能鍵 (S1)
MKEY BIT P3.1 ;修改鍵 (S2)
;
WORKIN BIT 38H ;工作狀態指示位
;
;******************
; 中斷入口 ;
;******************
ORG 0000H
C:\MY DOCUMENTS\2003.02.12書稿\配套光盤源程序\實例13\13.ASM
頁 2
01-29-03
02:14:23
偉福匯編器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 機器碼 源程序
0000 020030 START: LJMP MAIN ; 0000H 引向主程序
0003 02040D LJMP ERR ; 0003H
0006 00 NOP
0007 00 NOP
0008 02040D LJMP ERR ; 引向出錯處理程序
000B 02010F LJMP PGT0 ; 000BH 引向中斷處理程序PGT0
000E 00 NOP
000F 00 NOP
0010 02040D LJMP ERR ; 引向出錯處理程序
0013 02040D LJMP ERR ; 0013H INT1
0016 00 NOP
0017 00 NOP
0018 02040D LJMP ERR
001B 02040D LJMP ERR ; 001BH T1
001E 00 NOP
001F 00 NOP
0020 02040D LJMP ERR
0023 02040D LJMP ERR ; 0023H
0026 00 NOP
0027 00 NOP
0028 02040D LJMP ERR
002B 02040D LJMP ERR ; 002BH
002E 00 NOP
002F 00 NOP
;
;************
; 主程序 ;
;************
0030 75A800 MAIN: MOV IE, #00H ;關中斷
0033 758157 MOV SP, #57H ;設置堆棧指針
0036 75D000 MOV PSW, #00H ;選用寄存器組0
0039 758911 MOV TMOD, #11H ;設定中斷工作方式為T0和T1
;
003C E556 MOV A, 56H
003E B4AA0C CJNE A, #0AAH, CSTART ;判上電復位標志,無標志轉冷啟動
0041 E557 MOV A, 57H
0043 B45507 CJNE A, #55H, CSTART ; 無標志轉冷啟動
0046 0198 AJMP HSTART ;有上電復位標志轉熱啟動
0048 00 NOP
0049 00 NOP
004A 02040D LJMP ERR ;軟件陷阱,引向出錯處理程序
004D 7590FF CSTART: MOV P1, #0FFH ;冷啟動,全面初始化
0050 75B0FF MOV P3, #0FFH
0053 758800 MOV TCON, #00H ;計時停止
0056 758AB0 MOV TL0, #0B0H ;賦中斷T0初值
0059 758C3C MOV TH0, #3CH
005C 753C0A MOV TCOUNT, #0AH ;賦定時器初值
005F 7D00 MOV R5, #00H ;R5為一空單元(備用)
C:\MY DOCUMENTS\2003.02.12書稿\配套光盤源程序\實例13\13.ASM
頁 3
01-29-03
02:14:23
偉福匯編器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 機器碼 源程序
0061 7C00 MOV R4, #00H ; R4 為工作模式選擇寄存器
0063 753000 MOV SL, #00H ;定時單元清零
0066 753100 MOV SH, #00H ;秒
0069 753200 MOV ML, #00H ;
006C 753300 MOV MH, #00H ;分
006F 753400 MOV HL, #00H ;
0072 753500 MOV HH, #00H ;時
0075 753B64 MOV PLYTS, #64H ;賦顯示次數初值為100次
0078 753A36 MOV DSPLYP, #L0 ;顯示指針指向顯存單元
007B 75360A MOV L0, #0AH ;送顯示數據"-----"
007E 75370A MOV L1, #0AH
0081 75380A MOV L2, #0AH
0084 753904 MOV L3, #04H
0087 D230 SETB LED4 ;LED4為數碼管之間的發光二極管
0089 D239 SETB LPLMOD ;設定顯示方式為閃爍
008B D23A SETB HPLMOD ;
008D D23B SETB BRIGHT ;允許顯示
008F C238 CLR WORKIN ;清工作標志 , 待命
0091 01AB AJMP SETUP ;轉開始工作
0093 00 NOP
0094 00 NOP
0095 02040D LJMP ERR ;軟件陷阱
0098 759800 HSTART: MOV SCON, #00H ; 有上電標志,熱啟動,清串行口控制寄存器
009B 75B800 MOV IP, #00H ; 清中斷優先控制寄存器
009E D2B0 SETB FKEY ;重設按鍵
00A0 D2B1 SETB MKEY
00A2 D2AF SETB EA ;開中斷
00A4 01BD AJMP BEGIN ;轉向繼續工作
00A6 00 NOP
00A7 00 NOP
00A8 02040D LJMP ERR ;軟件陷阱
00AB D2AF SETUP: SETB EA ;開中斷
;
00AD 711F MAIN1: ACALL DISPLY ;調用顯示
00AF 20B035 JB FKEY, JUDGE ;按鍵掃描
00B2 71D1 ACALL KEYDLY ;延時消抖動
00B4 20B030 JB FKEY, JUDGE ;無鍵按下轉向判斷是否到點
00B7 C2A9 CLR ET0 ;功能鍵被按下,則
00B9 C28C CLR TR0 ;暫停計時
00BB 31C3 ACALL MENU ; 調用菜單設置程序
00BD D238 BEGIN: SETB WORKIN ;置工作標志位,開始工作
00BF D2A9 SETB ET0 ;開中斷
00C1 D28C SETB TR0 ;開始計時
00C3 EC MOV A, R4 ;移入工作模式選擇
00C4 23 RL A ;指針放大
00C5 9000C9 MOV DPTR, #M_TAB
00C8 73 JMP @A+DPTR ;根據工作模式跳轉到相應程序段
00C9 01D6 M_TAB: AJMP WORK1
C:\MY DOCUMENTS\2003.02.12書稿\配套光盤源程序\實例13\13.ASM
頁 4
01-29-03
02:14:23
偉福匯編器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 機器碼 源程序
00CB 01D6 AJMP WORK2
00CD 01DF AJMP WORK3
00CF 01DF AJMP WORK4
00D1 00 NOP
00D2 00 NOP
00D3 02040D LJMP ERR ;軟件陷阱
WORK1: ;
00D6 C2B7 WORK2: CLR SWITCH ;工作方式1和2:開繼電器
00D8 01E1 AJMP MAIN2
00DA 00 NOP
00DB 00 NOP
00DC 02040D LJMP ERR ;軟件陷阱
WORK3: ;
00DF D2B7 WORK4: SETB SWITCH ;工作方式3和4:不開繼電器
00E1 C297 MAIN2: CLR BELL ;蜂鳴器短鳴一聲,以示開始工作
00E3 71F3 ACALL DL05S
00E5 D297 SETB BELL
00E7 3038C3 JUDGE: JNB WORKIN, MAIN1 ;判斷是否在定時之中
00EA E530 MOV A, SL ;判斷秒是否為零
00EC 70BF JNZ MAIN1
00EE E531 MOV A, SH ;判斷秒是否為零
00F0 70BB JNZ MAIN1
00F2 E532 MOV A, ML ;判斷分是否為零
00F4 70B7 JNZ MAIN1
00F6 E533 MOV A, MH ;判斷分是否為零
00F8 70B3 JNZ MAIN1
00FA E534 MOV A, HL ;判斷時是否為零
00FC 70AF JNZ MAIN1
00FE E535 MOV A, HH ;判斷時是否為零
0100 70AB JNZ MAIN1 ;若時分秒全為零則
0102 C2A9 CLR ET0 ; 停止計時
0104 C28C CLR TR0 ;
0106 5186 ACALL ACTION ; 調用到點工作子程序
0108 0130 AJMP MAIN ; 返回
010A 00 NOP
010B 00 NOP
010C 02040D LJMP ERR ;軟件陷阱
;
;******************
; 倒計時程序 ;
;******************
010F C2AF PGT0: CLR EA ;關中斷
0111 C0E0 PUSH ACC ;保護現場
0113 C0D0 PUSH PSW
0115 C082 PUSH DPL
0117 C083 PUSH DPH
0119 75D008 MOV PSW, #08H ;選用寄存器組1
011C C28C CLR TR0 ;暫停計時
C:\MY DOCUMENTS\2003.02.12書稿\配套光盤源程序\實例13\13.ASM
頁 5
01-29-03
02:14:23
偉福匯編器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 機器碼 源程序
011E 74B7 MOV A,#0B7H ;中斷同步修正
0120 258A ADD A,TL0
0122 F58A MOV TL0,A
0124 743C MOV A,#3CH
0126 258C ADD A,TH0
0128 F58C MOV TH0,A
012A D28C SETB TR0 ;恢復計時
012C 153C DEC TCOUNT ;定時器T0每50 000毫秒溢出一次,則
012E E53C MOV A, TCOUNT ; 溢出10次為0.5秒
0130 7028 JNZ OUTT0 ;判斷是否到半秒
0132 753C0A MOV TCOUNT, #0AH ;
0135 B230 CPL LED4 ; 若到半秒LED取反
0137 303020 JNB LED4, OUTT0 ;LED每閃爍一次是一秒
013A 7831 MOV R0, #SH ;移入秒位的地址
013C D220 SETB IFDEC ;BCD子程序參數,使其做減法
013E 316A ACALL ADDBCD ;調用BCD子程序, 秒減1
0140 BB9917 CJNE R3, #99H, OUTT0 ;判斷秒要否借位
0143 753105 MOV SH, #05H ;要借位則
0146 753009 MOV SL, #09H ; 送數據59(否則顯示99)
0149 7833 MOV R0, #MH ;移入分位的地址
014B 316A ACALL ADDBCD ;分減1
014D BB990A CJNE R3, #99H, OUTT0 ;判斷分要否借位
0150 753305 MOV MH, #05H
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -