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

📄 file1.lst

📁 单片机学习系统附的实验源代码
💻 LST
字号:

PAGE 1





    1:				;LED显示实验
    2:				;现象:8个LED指示灯从左到右,然后从右到左依次循环显示
    3:				;这个实验演示的是一种最基本的,也是最常用的,单片机对端口操作的方法和延时的方法
    4:				;下面都有程序代码和中文注释
    5:				;蜂鸣器和数码管均没有指示(以后,凡是没有提到的,都没有反应,比如蜂鸣器,数码管等)
    6:
    7:
    8:		B	 B7	    beep   bit  p3.7     ;蜂鸣器定义对应的单片机引脚
    9:
   10:		B	 90	    led1   bit  p1.0      ;第一个数码管对应的引脚
   11:		B	 91	    led2   bit  p1.1      ;第二个数码管对应的引脚
   12:		B	 92	    led3   bit  p1.2      ;第三个数码管对应的引脚
   13:		B	 93	    led4   bit  p1.3      ;第四个数码管对应的引脚
   14:		B	 94	    led5   bit  p1.4      ;第五个数码管对应的引脚
   15:		B	 95	    led6   bit  p1.5      ;第六个数码管对应的引脚
   16:		B	 96	    led7   bit  p1.6      ;第七个数码管对应的引脚
   17:		B	 97	    led8   bit  p1.7      ;第八个数码管对应的引脚
   18:
   19:		N      0000		org 00h               ;程序开始
   20:	  0000	02 00 30		jmp main              ;跳转到主程序
   21:
   22:		N      0030		org 030h              ;主程序从30H开始
   23:
   24:	  0030	75 81 30	   main:   	mov sp,#30h              ;初始化堆栈,这一条语句不能放到初始化程序里
   25:				                                     ;否则程序不能正确返回,为什么?
   26:	  0033	12 00 3B	            lcall rest               ;调用初始化程序,进行初始化
   27:	  0036	12 00 4C	            lcall pro_led            ;调用LED显示程序
   28:	  0039	80 F5		            jmp main                 ;返回开始
   29:
   30:	  003B	74 00		   rest:   	mov a,#00h               ;初始化程序,首先将累加器清零
   31:	  003D	75 F0 00				mov b,#00h               ;累加器B也请零
   32:	  0040	75 80 00				mov p0,#0                ;所有P0口置低位,禁止数码管显示
   33:	  0043	85 FF 90				mov p1,0ffh              ;P1口高位,LED也不显示
   34:	  0046	75 A0 FF				mov p2,#255              ;P2口也高位,禁止数码管显示,
   35:				                                     ;将立即数写成#255(后面没有H)表示十进制,
   36:				                                     ;如果写成#0FFH(后面有个H)表示十六进制,
   37:				                                     ;如果十六进制高位大于9,必须在前面加上0,
   38:				                                     ;如0A0H,结果还是 A0H(160),0AH(10)否则编译不能通过
   39:	  0049	C2 B7		            clr beep                 ;禁止蜂鸣器发出声音,如果写成setb beep(置位蜂鸣器)
   40:				                                     ;则蜂鸣器发出声音
   41:	  004B	22		            ret                      ;子程序返回
   42:
   43:				;******************   注意:注释字符前一定要加上 ; ***********************
   44:				;LED显示程序用来控制LED的显示,通常用在街道霓虹等控制等
   45:				;采用两种不同的走灯方式,可以采用不同的策略,组合出不同的走灯花样
   46:				;单片机学习的窍门就是多实践,希望大家多从应用程序中得到启示
   47:				;不断进步,从而提高自己的单片机应用能力
   48:
   49:	  004C			pro_led:                                    ;LED显示程序开始
   50:	  004C	D2 90		        setb led1                           ;熄灭第一个LED
   51:	  004E	C2 97		        clr led8                            ;显示后一个LED
   52:	  0050	12 00 B6	        lcall delay                         ;延时
   53:
   54:	  0053	D2 91		        setb led2                           ;进入第二个循环,熄灭第二个LED
   55:	  0055	C2 90		        clr led1                            ;显示第一个LED
   56:	  0057	12 00 B6	        lcall delay                         ;如此反复,直到所有的LED都循环过

PAGE 2



   57:
   58:	  005A	D2 92		        setb led3
   59:	  005C	C2 91		        clr led2
   60:	  005E	12 00 B6	        lcall delay
   61:
   62:	  0061	D2 93		        setb led4
   63:	  0063	C2 92		        clr led3
   64:	  0065	12 00 B6	        lcall delay
   65:
   66:	  0068	D2 94		        setb led5
   67:	  006A	C2 93		        clr led4
   68:	  006C	12 00 B6	        lcall delay
   69:
   70:	  006F	D2 95		        setb led6
   71:	  0071	C2 94		        clr led5
   72:	  0073	12 00 B6	        lcall delay
   73:
   74:	  0076	D2 96		        setb led7
   75:	  0078	C2 95		        clr led6
   76:	  007A	12 00 B6	        lcall delay
   77:
   78:	  007D	D2 97		        setb led8
   79:	  007F	C2 96		        clr led7
   80:	  0081	12 00 B6	        lcall delay
   81:	  0084			  again:                                 ;开始另外一种显示方式
   82:	  0084	D2 96		        setb led7                        ;清除第7个LED
   83:	  0086	C2 97		        clr led8                         ;点亮第8个LED
   84:	  0088	12 00 B6	        lcall delay                      ;延时 ,然后如此循环
   85:
   86:	  008B	D2 95		        setb led6
   87:	  008D	C2 96		        clr led7
   88:	  008F	12 00 B6	        lcall delay
   89:
   90:	  0092	D2 94		        setb led5
   91:	  0094	C2 95		        clr led6
   92:	  0096	12 00 B6	        lcall delay
   93:
   94:	  0099	D2 93		        setb led4
   95:	  009B	C2 94		        clr led5
   96:	  009D	12 00 B6	        lcall delay
   97:
   98:	  00A0	D2 92		        setb led3
   99:	  00A2	C2 93		        clr led4
  100:	  00A4	12 00 B6	        lcall delay
  101:
  102:	  00A7	D2 91		        setb led2
  103:	  00A9	C2 92		        clr led3
  104:	  00AB	12 00 B6	        lcall delay
  105:
  106:	  00AE	D2 90		        setb led1
  107:	  00B0	C2 91		        clr led2
  108:	  00B2	12 00 B6	        lcall delay
  109:
  110:	  00B5	22		        ret                 ;返回,
  111:				; **************************************************
  112:	  00B6			delay:
  113:	  00B6	C0 D0		        push psw          ; 保护PSW寄存器
  114:	  00B8	C2 D3		        clr    psw.3        ;

PAGE 3



  115:	  00BA	D2 D4				setb psw.4        ; 重新设置寄存器组别
  116:	  00BC	78 02				mov r0,#2         ; 延时常数
  117:	  00BE	79 FA				mov r1,#250       ; 延时常数
  118:	  00C0	7A 02				mov r2,#2         ; 延时常数
  119:	  00C2	D8 FE		    dl1:djnz r0,dl1       ; 延时循环1
  120:	  00C4	78 FA		    	mov r0,#250       ;
  121:	  00C6	D9 FA		    dl2:djnz r1,dl1       ; 延时循环2
  122:	  00C8	78 F0		        mov r0,#240       ;
  123:	  00CA	79 F8		        mov r1,#248       ;
  124:	  00CC	DA F4		    dl3:djnz r2,dl1       ; 这是第三个循环
  125:	  00CE	00		        nop               ; 这个用来修正演示精度
  126:	  00CF	D0 D0			    pop psw           ; 恢复PSW寄存器
  127:	  00D1	22		        ret               ; 延时子程序返回
  128:
  129:				; *******************  下面是 数码管显示的编码  ************************************
  130:
  131:				;用来对显示的数据所对应的数码管位数进行编码,如 "0",对应 数码管的 a,b,c,d,e,f 写成编码就是 0c0h;
  132:				;为了正确显示,请不要修改,如果要显示更多的字符,可以在后面加入,单对应的十六进制代码要改变;
  133:				;否则,需要自己另外根据格式定义一组编码表格;
  134:
  135:	  00D2	C0 F9 A4 B0	tab_nu:  db 0c0h,0f9h, 0a4h, 0b0h, 99h , 92h , 82h, 0f8h ; 不带小数点十六进制数字0--7对应的编码
	  00D6	99 92 82 F8
  136:	  00DA	80 90 88 83	         db 80h , 90h, 88h , 83h , 0c6h, 0a1h, 86h, 8eh  ; 不带小数点十六进制数字8--F对应的编码
	  00DE	C6 A1 86 8E
  137:	  00E2	40 79 24 30	         db 40h , 79h, 24h , 30h , 19h , 12h , 02h, 78h  ;带小数点十六进制数字0--7对应的编码
	  00E6	19 12 02 78
  138:	  00EA	00 10 08 03	         db 00h , 10h, 08h , 03h , 46h , 21h , 06h, 0eh  ; 带小数点十六进制数字8--F对应的编码
	  00EE	46 21 06 0E
  139:
  140:				   end    ;告诉编译器,程序代码到此结束,如果没有这条语句,编译器会报出错误
  141:





                     register banks used:  ---

          0  个错误




PAGE 4





	       L I S T   O F   S Y M B O L S
	       =============================


SYMBOL				  TYPE     VALUE	LINE
------------------------------------------------------------
AC				  BIT	      D6
ACC				  DATA	      E0
AGAIN				  CODE	    0084	  81
B				  DATA	      F0
BEEP				  BIT	      B7	   8
CY				  BIT	      D7
DELAY				  CODE	    00B6	 112
DL1				  CODE	    00C2	 119
DL2				  CODE	    00C6	 121
DL3				  CODE	    00CC	 124
DPH				  DATA	      83
DPL				  DATA	      82
EA				  BIT	      AF
ES				  BIT	      AC
ET0				  BIT	      A9
ET1				  BIT	      AB
EX0				  BIT	      A8
EX1				  BIT	      AA
EXTI0				  CODE	    0003
EXTI1				  CODE	    0013
F0				  BIT	      D5
IE				  DATA	      A8
IE0				  BIT	      89
IE1				  BIT	      8B
INT0				  BIT	      B2
INT1				  BIT	      B3
IP				  DATA	      B8
IT0				  BIT	      88
IT1				  BIT	      8A
LED1				  BIT	      90	  10
LED2				  BIT	      91	  11
LED3				  BIT	      92	  12
LED4				  BIT	      93	  13
LED5				  BIT	      94	  14
LED6				  BIT	      95	  15
LED7				  BIT	      96	  16
LED8				  BIT	      97	  17
MAIN				  CODE	    0030	  24
OV				  BIT	      D2
P				  BIT	      D0
P0				  DATA	      80
P1				  DATA	      90
P2				  DATA	      A0
P3				  DATA	      B0
PCON				  DATA	      87
PRO_LED				  CODE	    004C	  49
PS				  BIT	      BC
PSW				  DATA	      D0
PT0				  BIT	      B9
PT1				  BIT	      BB

PAGE 5



SYMBOL				  TYPE     VALUE	LINE
------------------------------------------------------------
PX0				  BIT	      B8
PX1				  BIT	      BA
RB8				  BIT	      9A
RD				  BIT	      B7
REN				  BIT	      9C
RESET				  CODE	    0000
REST				  CODE	    003B	  30
RI				  BIT	      98
RS0				  BIT	      D3
RS1				  BIT	      D4
RXD				  BIT	      B0
SBUF				  DATA	      99
SCON				  DATA	      98
SINT				  CODE	    0023
SM0				  BIT	      9F
SM1				  BIT	      9E
SM2				  BIT	      9D
SP				  DATA	      81
T0				  BIT	      B4
T1				  BIT	      B5
TAB_NU				  CODE	    00D2	 135
TB8				  BIT	      9B
TCON				  DATA	      88
TF0				  BIT	      8D
TF1				  BIT	      8F
TH0				  DATA	      8C
TH1				  DATA	      8D
TI				  BIT	      99
TIMER0				  CODE	    000B
TIMER1				  CODE	    001B
TL0				  DATA	      8A
TL1				  DATA	      8B
TMOD				  DATA	      89
TR0				  BIT	      8C
TR1				  BIT	      8E
TXD				  BIT	      B1
WR				  BIT	      B6

⌨️ 快捷键说明

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