⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pxsjpgb.lst

📁 电子时钟的单片机设计
💻 LST
📖 第 1 页 / 共 3 页
字号:

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 1





       MCS-51 Family Cross Assembler   A S E M - 5 1   V 1.2
       =====================================================



	Source File:	PXSJPGB.ASM
	Object File:	PXSJPGB.HEX
	List File:	PXSJPGB.LST



 Line  I  Addr  Code            Source

    1:		N      0000	        org     0000h
    2:	  0000	02 00 30	        ljmp    main
    3:		N      000B	        org   000bh
    4:	  000B	02 03 0C	        ljmp  it00                ;定时中断0
    5:				;***************************;
    6:				;         主程序	    ;
    7:				;***************************;
    8:		N      0030	        org     0030h
    9:	  0030			main:
   10:	  0030	75 28 00		mov   28h,#00h		 ;标记位总清零
   11:	  0033	75 41 23		mov   41h,#23h           ;显视数字的首地址指针(即23单元)
   12:	  0036	75 50 22	        mov   50h,#22h           ;显视横杠的首地址指针(即22单元)
   13:	  0039	75 44 08	    	mov   44h,#08h           ;定时器高位(TH0)初值
   14:	  003C	75 43 88	        mov   43h,#88h           ;定时器低位(TL0)初值
   15:	  003F	75 5B 00		mov   5bh,#00h
   16:	  0042	75 5C 00	        mov   5ch,#00h
   17:	  0045	C2 50			clr   50h
   18:	  0047	C2 6E			clr   6eh                ;清闪动开关标志位
   19:	  0049	75 89 01		mov   tmod,#01h          ;定时方式1 (16位计数器)
   20:	  004C	85 44 8C	        mov   th0,44h            ;定时器高位(TH0)送初值
   21:	  004F	85 43 8A	        mov   tl0,43h		 ;定时器低位(TL0)送初值
   22:	  0052	D2 A9		        setb  et0                ;定时中断0 允许中断
   23:	  0054	D2 8C		        setb  tr0                ;启动定时器
   24:	  0056	D2 AF			setb  ea                 ;开中断
   25:	  0058	75 42 2E		mov   42h,#2eh
   26:	  005B	75 20 2E		mov   20h,#2eh
   27:	  005E	75 21 2E		mov   21h,#2eh
   28:	  0061	75 22 2E	        mov   22h,#2eh
   29:	  0064	75 23 2F	        mov   23h,#2fh            ;让23单元显视P
   30:	  0067	12 03 5F	key:    lcall dirv
   31:				;-------------------------;
   32:				;         读键            ;
   33:				;-------------------------;
   34:	  006A			kl0:
   35:	  006A	D2 A9		       setb  et0                ;定时中断0 允许中断
   36:	  006C	D2 8C		       setb  tr0                ;启动定时器
   37:	  006E	D2 AF		       setb  ea                 ;开中断
   38:	  0070	74 0F		       mov   a,#0fh
   39:	  0072	F5 A0		       mov   p2,a
   40:	  0074	E5 A0		       mov   a,p2               ;p2口低四位为键扫描输入,高四位数出
   41:	  0076	30 E0 0F	       jnb   acc.0,kl1          ;判断有无键按下
   42:	  0079	30 E1 0C	       jnb   acc.1,kl1          ;判断有无键按下
   43:	  007C	30 E2 09	       jnb   acc.2,kl1          ;判断有无键按下

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 2



 Line  I  Addr  Code            Source

   44:	  007F	30 E3 06	       jnb   acc.3,kl1          ;判断有无键按下
   45:	  0082	12 03 5F	       lcall dirv
   46:	  0085	02 00 6A	       ljmp  kl0                ;无键按下继续
   47:	  0088	12 03 5F	kl1:   lcall dirv               ;20h单元位0为1处于最高位带小数点显示
   48:	  008B	74 0F		kl12:  mov   a,#0fh
   49:	  008D	F5 A0		       mov   p2,a
   50:	  008F	E5 A0		       mov   a,p2               ;p2口低四位为键扫描输入,高四位数出
   51:	  0091	30 E0 11	       jnb   acc.0,kl2
   52:	  0094	30 E1 0E	       jnb   acc.1,kl2
   53:	  0097	30 E2 0B	       jnb   acc.2,kl2
   54:	  009A	30 E3 08	       jnb   acc.3,kl2          ;判断有无键按下
   55:	  009D	C2 51		       clr   51h               ;清除键按下标记:28h单元位1为1则键按下
   56:	  009F	12 03 5F	       lcall dirv
   57:	  00A2	02 00 6A	       ljmp  kl0               ;为抖动没键按下继续
   58:	  00A5	30 51 03	kl2:   jnb   51h,ke1y          ;28h单元位1为1则键按下已经处理过反回
   59:	  00A8	02 00 6A	       ljmp  kl0
   60:	  00AB	D2 51		ke1y:  setb  51h               ;打上键按下标记:28h单元位1为1则键按下
   61:	  00AD	7A EF		       mov   r2,#0efh          ;确实有键开始扫描键值
   62:	  00AF	7C 00		       mov   r4,#00h
   63:	  00B1			pk1:  ; mov   a,p2               ;p2口低四位为键扫描输入,高四位数出
   64:	  00B1	EA		       mov   a,r2
   65:	  00B2	F5 A0		       mov   p2,a
   66:	  00B4	E5 A0		       mov   a,p2               ;p2口低四位为键扫描输入,高四位数出
   67:	  00B6	79 00		       mov   r1,#00h            ;r1中为键行数
   68:	  00B8	30 E0 15	       jnb   acc.0,pk20          ;判有无键按下
   69:	  00BB	12 00 E2	       lcall kll2
   70:	  00BE	30 E1 0F	       jnb   acc.1,pk20          ;判有无键按下
   71:	  00C1	12 00 E2	       lcall kll2
   72:	  00C4	30 E2 09	       jnb   acc.2,pk20          ;判有无键按下
   73:	  00C7	12 00 E2	       lcall kll2
   74:	  00CA	30 E3 03	       jnb   acc.3,pk20          ;判有无键按下
   75:	  00CD	02 00 D7	       ljmp  pk2
   76:	  00D0	74 00		pk20:  mov   a,#00h
   77:	  00D2	2C		       add   a,r4
   78:	  00D3	29		       add   a,r1
   79:	  00D4	02 00 E9	       ljmp  pk5               ;扫到键值去散转处理
   80:	  00D7	0C		pk2:   inc   r4
   81:	  00D8	EA		       mov   a,r2
   82:	  00D9	30 E7 04	       jnb   acc.7,pk3         ;判断4个键是否扫描完
   83:	  00DC	23		       rl    a
   84:	  00DD	FA		       mov   r2,a
   85:	  00DE	01 B1		       ajmp  pk1               ;16个键没扫完继续
   86:	  00E0	01 6A		pk3:   ajmp  kl0               ;16个键全扫完为误动作反回
   87:
   88:	  00E2	F8		kll2:  mov   r0,a
   89:	  00E3	E9		       mov   a,r1
   90:	  00E4	24 04		       add   a,#04h              ;加一行四个键
   91:	  00E6	F9		       mov   r1,a
   92:	  00E7	E8		       mov   a,r0
   93:	  00E8	22		       ret
   94:
   95:				;------------------------------;
   96:				;       键状态判断子程序       ;
   97:				;------------------------------;
   98:	  00E9	90 00 F3	pk5:    mov   dptr,#tb0         ;散转处理
   99:	  00EC	FA		        mov   r2,a

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 3



 Line  I  Addr  Code            Source

  100:	  00ED	2A		        add   a,r2
  101:	  00EE	50 02		        jnc   pk6
  102:	  00F0	05 83		        inc   dph
  103:	  00F2	73		pk6:    jmp   @a+dptr
  104:	  00F3	21 16		tb0:    ajmp  k11                ;键7
  105:	  00F5	21 29		        ajmp  k12                ;键8
  106:	  00F7	21 3C		        ajmp  k13                ;键9
  107:	  00F9	21 4F		        ajmp  k14                ;键/
  108:
  109:	  00FB	21 52		        ajmp  k21                ;键4
  110:	  00FD	21 65		        ajmp  k22                ;键5
  111:	  00FF	21 78		        ajmp  k23                ;键6
  112:	  0101	21 8B		        ajmp  k24                ;键x
  113:
  114:	  0103	21 8E		        ajmp  k31                ;键1
  115:	  0105	21 A1		        ajmp  k32                ;键2
  116:	  0107	21 B4		        ajmp  k33                ;键3
  117:	  0109	21 C7		        ajmp  k34                ;键-
  118:
  119:	  010B	41 46		        ajmp  k41                ;键c
  120:	  010D	41 9B		        ajmp  k42                ;键0
  121:	  010F	41 AE		        ajmp  k43                ;键=
  122:	  0111	41 B1		        ajmp  k44                ;键+
  123:
  124:	  0113	02 00 6A	        ljmp  kl0
  125:
  126:	  0116			k11:                            ;键7
  127:	  0116	12 03 22	        lcall xshg
  128:	  0119	A8 41		        mov   r0,41h
  129:	  011B	76 07		        mov   @r0,#07h
  130:	  011D	12 03 4A	        lcall xs
  131:	  0120	75 6B 00	        mov   6bh,#00h          ;清除键"-"记忆
  132:	  0123	75 5B 00	        mov   5bh,#00h          ;显示数据末位指针清零
  133:	  0126	02 00 6A	        ljmp  kl0
  134:	  0129			k12:                            ;键8
  135:	  0129	12 03 22		lcall xshg
  136:	  012C	A8 41		        mov   r0,41h
  137:	  012E	76 08		        mov   @r0,#08h
  138:	  0130	12 03 4A	        lcall xs
  139:	  0133	75 6B 00	        mov   6bh,#00h          ;清除键"-"记忆
  140:	  0136	75 5B 00	        mov   5bh,#00h          ;显示数据末位指针清零
  141:	  0139	02 00 6A		ljmp  kl0
  142:	  013C			k13:                            ;键9
  143:	  013C	12 03 22		lcall xshg
  144:	  013F	A8 41		        mov   r0,41h
  145:	  0141	76 09		        mov   @r0,#09h
  146:	  0143	12 03 4A	        lcall xs
  147:	  0146	75 6B 00	        mov   6bh,#00h          ;清除键"-"记忆
  148:	  0149	75 5B 00	        mov   5bh,#00h          ;显示数据末位指针清零
  149:	  014C	02 00 6A		ljmp  kl0
  150:	  014F			k14:                            ;键/
  151:	  014F	02 00 6A		ljmp  kl0
  152:
  153:	  0152			k21:                            ;键4
  154:	  0152	12 03 22		lcall xshg
  155:	  0155	A8 41		        mov   r0,41h

ASEM-51 V1.2                                         Copyright (c) 1996 by W.W. Heinz                                         PAGE 4



 Line  I  Addr  Code            Source

  156:	  0157	76 04		        mov   @r0,#04h
  157:	  0159	12 03 4A	        lcall xs
  158:	  015C	75 6B 00	        mov   6bh,#00h          ;清除键"-"记忆
  159:	  015F	75 5B 00	        mov   5bh,#00h          ;显示数据末位指针清零
  160:	  0162	02 00 6A		ljmp  kl0
  161:	  0165			k22:                            ;键5
  162:	  0165	12 03 22		lcall xshg
  163:	  0168	A8 41		        mov   r0,41h
  164:	  016A	76 05		        mov   @r0,#05h
  165:	  016C	12 03 4A	        lcall xs
  166:	  016F	75 6B 00	        mov   6bh,#00h          ;清除键"-"记忆
  167:	  0172	75 5B 00	        mov   5bh,#00h          ;显示数据末位指针清零
  168:	  0175	02 00 6A		ljmp  kl0
  169:	  0178			k23:                            ;键6
  170:	  0178	12 03 22		lcall xshg
  171:	  017B	A8 41		        mov   r0,41h
  172:	  017D	76 06		        mov   @r0,#06h
  173:	  017F	12 03 4A	        lcall xs
  174:	  0182	75 6B 00	        mov   6bh,#00h          ;清除键"-"记忆
  175:	  0185	75 5B 00	        mov   5bh,#00h          ;显示数据末位指针清零
  176:	  0188	02 00 6A		ljmp  kl0
  177:	  018B			k24:                            ;键x
  178:	  018B	02 00 6A		ljmp  kl0
  179:
  180:	  018E			k31:                            ;键1
  181:	  018E	12 03 22		lcall xshg
  182:	  0191	A8 41		        mov   r0,41h
  183:	  0193	76 01		        mov   @r0,#01h
  184:	  0195	12 03 4A	        lcall xs
  185:	  0198	75 6B 00	        mov   6bh,#00h          ;清除键"-"记忆
  186:	  019B	75 5B 00	        mov   5bh,#00h          ;显示数据末位指针清零
  187:	  019E	02 00 6A		ljmp  kl0
  188:	  01A1			k32:                            ;键2
  189:	  01A1	12 03 22		lcall xshg
  190:	  01A4	A8 41		        mov   r0,41h
  191:	  01A6	76 02		        mov   @r0,#02h
  192:	  01A8	12 03 4A	        lcall xs
  193:	  01AB	75 6B 00	        mov   6bh,#00h          ;清除键"-"记忆
  194:	  01AE	75 5B 00	        mov   5bh,#00h          ;显示数据末位指针清零
  195:	  01B1	02 00 6A		ljmp  kl0
  196:	  01B4			k33:                            ;键3
  197:	  01B4	12 03 22		lcall xshg
  198:	  01B7	A8 41		        mov   r0,41h
  199:	  01B9	76 03		        mov   @r0,#03h
  200:	  01BB	12 03 4A	        lcall xs
  201:	  01BE	75 6B 00	        mov   6bh,#00h          ;清除键"-"记忆
  202:	  01C1	75 5B 00	        mov   5bh,#00h          ;显示数据末位指针清零
  203:	  01C4	02 00 6A		ljmp  kl0
  204:	  01C7			k34:                            ;键-
  205:	  01C7	85 41 4A		mov   4ah,41h        ;保存当前显示指针到4ah
  206:	  01CA	05 6B		       inc   6bh            ;
  207:	  01CC	E5 6B		       mov   a,6bh
  208:	  01CE	64 01		       xrl   a,#01h         ;是否第一次按k34
  209:	  01D0	70 2C		       jnz    kw2
  210:	  01D2	A8 41		       mov   r0,41h

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -