📄 训练项目十一:led及拨码开关的综合实验.lis
字号:
.module _训练项目十一:LED及拨码开关的综合实验.c
.area text(rom, con, rel)
; uidelay_time -> R20,R21
; uitime -> R16,R17
.even
0000 _Delay::
0000 4A93 st -y,R20
0002 5A93 st -y,R21
0004 ; /*******************************************Copyright(c)*******************************************
0004 ; ** ChangSha University of Science & Technology
0004 ; **
0004 ; ** http://www.csust.com
0004 ; **
0004 ; **-------File Info---------------------------------------------------------------------------------
0004 ; ** File Name: LED及拨码开关的综合试实验
0004 ; ** Latest modified Date: 2008.7.26
0004 ; ** Latest Version:
0004 ; ** Description: 通过控制方向寄存器来控制输出电平的高低,进而实现交互闪烁灯
0004 ; **
0004 ; **-------------------------------------------------------------------------------------------------
0004 ; ** Created By:
0004 ; ** Created date:
0004 ; ** Version:
0004 ; ** Descriptions:
0004 ; **
0004 ; **-------------------------------------------------------------------------------------------------
0004 ; ** Modified by: congdongliang
0004 ; ** Modified date: 2008.7.26
0004 ; ** Version:
0004 ; ** Description: 根据《代码规范》修改了部分变量命名及程序格式,使程序更规范
0004 ; **
0004 ; **************************************************************************************************/
0004 ;
0004 ; #include "iom128v.h"
0004 ;
0004 ; /**************************************************************************************************
0004 ; ** Function name: Delay
0004 ; ** Description: 延时程序
0004 ; ** input parameters:
0004 ; ** output parameters:
0004 ; ** Returned value:
0004 ; ** Created by:
0004 ; ** Created Date:
0004 ; **-------------------------------------------------------------------------------------------------
0004 ; ** Modified by: congdongliang
0004 ; ** Modified date: 2008.7.26
0004 ; **-------------------------------------------------------------------------------------------------
0004 ; **************************************************************************************************/
0004 ;
0004 ; void Delay (unsigned int uitime)
0004 ; {
0004 ; unsigned int uidelay_time;
0004 ;
0004 ; for(uidelay_time=0; uidelay_time<uitime; uidelay_time++);
0004 4427 clr R20
0006 5527 clr R21
0008 02C0 xjmp L5
000A L2:
000A L3:
000A 4F5F subi R20,255 ; offset = 1
000C 5F4F sbci R21,255
000E L5:
000E 4017 cp R20,R16
0010 5107 cpc R21,R17
0012 D8F3 brlo L2
0014 X0:
0014 L1:
0014 .dbline 0 ; func end
0014 5991 ld R21,y+
0016 4991 ld R20,y+
0018 0895 ret
.even
001A _main::
001A ;
001A ; }
001A ;
001A ; /**************************************************************************************************
001A ; ** Function name: main
001A ; ** Description: 通过控制寄存器来控制PA口输出电平的高低,来实现两个LED灯的交互
001A ; ** 闪烁
001A ; ** input parameters:
001A ; ** output parameters:
001A ; **
001A ; ** Returned value:
001A ; ** Created by:
001A ; ** Created Date:
001A ; **-------------------------------------------------------------------------------------------------
001A ; ** Modified by: congdongliang
001A ; ** Modified date: 2008.7.26
001A ; **-------------------------------------------------------------------------------------------------
001A ; **************************************************************************************************/
001A ; void main ()
001A ; {
001A ; DDRA = 0xFF;
001A 8FEF ldi R24,255
001C 8ABB out 0x1a,R24
001E ; PORTA= 0xFF;
001E 8BBB out 0x1b,R24
0020 ; DDRB = 0x00;
0020 2224 clr R2
0022 27BA out 0x17,R2
0024 ; PORTB= 0xFF; /* 定义PA口、PB口的数据方向寄存器,以及对其数据寄存器初始化 */
0024 88BB out 0x18,R24
0026 ;
0026 ; for(;;){
0026 L7:
0026 ; if((PINB & 0x01) == 0) {
0026 B099 sbic 0x16,0
0028 3BC0 rjmp L11
002A X1:
002A ; PORTA = 0xFD; /* 判断PB0的状态,若为0,则执行LED交互闪烁 */
002A 8DEF ldi R24,253
002C 8BBB out 0x1b,R24
002E ;
002E ; Delay(6000);
002E 00E7 ldi R16,6000
0030 17E1 ldi R17,23
0032 E6DF xcall _Delay
0034 ; Delay(6000);
0034 00E7 ldi R16,6000
0036 17E1 ldi R17,23
0038 E3DF xcall _Delay
003A ; Delay(6000);
003A 00E7 ldi R16,6000
003C 17E1 ldi R17,23
003E E0DF xcall _Delay
0040 ; Delay(6000);
0040 00E7 ldi R16,6000
0042 17E1 ldi R17,23
0044 DDDF xcall _Delay
0046 ; Delay(6000);
0046 00E7 ldi R16,6000
0048 17E1 ldi R17,23
004A DADF xcall _Delay
004C ; Delay(6000);
004C 00E7 ldi R16,6000
004E 17E1 ldi R17,23
0050 D7DF xcall _Delay
0052 ; Delay(6000);
0052 00E7 ldi R16,6000
0054 17E1 ldi R17,23
0056 D4DF xcall _Delay
0058 ; Delay(6000);
0058 00E7 ldi R16,6000
005A 17E1 ldi R17,23
005C D1DF xcall _Delay
005E ; Delay(6000);
005E 00E7 ldi R16,6000
0060 17E1 ldi R17,23
0062 CEDF xcall _Delay
0064 ;
0064 ; PORTA = 0xFB;
0064 8BEF ldi R24,251
0066 8BBB out 0x1b,R24
0068 ;
0068 ; Delay(6000);
0068 00E7 ldi R16,6000
006A 17E1 ldi R17,23
006C C9DF xcall _Delay
006E ; Delay(6000);
006E 00E7 ldi R16,6000
0070 17E1 ldi R17,23
0072 C6DF xcall _Delay
0074 ; Delay(6000);
0074 00E7 ldi R16,6000
0076 17E1 ldi R17,23
0078 C3DF xcall _Delay
007A ; Delay(6000);
007A 00E7 ldi R16,6000
007C 17E1 ldi R17,23
007E C0DF xcall _Delay
0080 ; Delay(6000);
0080 00E7 ldi R16,6000
0082 17E1 ldi R17,23
0084 BDDF xcall _Delay
0086 ; Delay(6000);
0086 00E7 ldi R16,6000
0088 17E1 ldi R17,23
008A BADF xcall _Delay
008C ; Delay(6000);
008C 00E7 ldi R16,6000
008E 17E1 ldi R17,23
0090 B7DF xcall _Delay
0092 ; Delay(6000);
0092 00E7 ldi R16,6000
0094 17E1 ldi R17,23
0096 B4DF xcall _Delay
0098 ; Delay(6000);
0098 00E7 ldi R16,6000
009A 17E1 ldi R17,23
009C B1DF xcall _Delay
009E ; }else{
009E C3CF xjmp L7
00A0 L11:
00A0 ;
00A0 ; PORTA = 0xFF; /* PB0为1时,PA口输出全为1,LED全部不亮 */
00A0 8FEF ldi R24,255
00A2 8BBB out 0x1b,R24
00A4 ; }
00A4 ; }
00A4 C0CF xjmp L7
00A6 X2:
00A6 L6:
00A6 .dbline 0 ; func end
00A6 0895 ret
00A8 ; }
00A8 ; /**************************************************************************************************
00A8 ; END FILE
00A8 ; **************************************************************************************************/
00A8 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -