📄 leddisp.lis
字号:
.module LEDDisp.c
.area text(rom, con, rel)
0000 .dbfile F:\job\M16学习板\LED显示程序(实验一)\LEDDisp.c
0000 .dbfile F:\job\M16学习板\LED显示程序(实验一)\..\ICC_H\SOFTWARE.h
0000 .dbfunc e ChangeIntToHex _ChangeIntToHex fV
0000 ; dec -> R20,R21
.even
0000 _ChangeIntToHex::
0000 0E940000 xcall push_gset1
0004 A801 movw R20,R16
0006 .dbline -1
0006 .dbline 136
0006 ; /*******************************************************************
0006 ; 实验一
0006 ; 实验名称: LED驱动程序实验
0006 ; 实验目的: 初步学习对单片机端口的操作,加深对AVR单片机端口寄存器的理解
0006 ; 实验现象: LED数码管从左向右依次亮,然后依次灭
0006 ; 环 境: ICCAVR6.31A
0006 ; 设 计 者: shinea8868
0006 ; 说 明: 部分程序原型源自网络,经本人修改调试可用,请尊重知识产权,如
0006 ; 作商业用途请保留本段文字
0006 ; 完成日期: 2007年4月9日
0006 ; *******************************************************************/
0006 ;
0006 ;
0006 ; #include <iom16v.h>
0006 ; #include <macros.h>
0006 ; #include "..\ICC_H\SOFTWARE.h"
0006 ; /*-----------------------------------------------------------------
0006 ; 延时程序计算方法
0006 ; 计数个数j = 延时时间/6*晶振频率 - 1
0006 ; -----------------------------------------------------------------*/
0006 ; void DelayMs(uint i)
0006 ; {
0006 ; uchar j;
0006 ; while(i--)
0006 ; {
0006 ; j = 167;//1mhz 1ms延时
0006 ; while(j--);
0006 ; }
0006 ; }
0006 ; /*-----------------------------------------------------------------
0006 ; 函数名称: void main(void)
0006 ; 函数功能:
0006 ; 参 数:
0006 ; 返 回 值: 无
0006 ; -----------------------------------------------------------------*/
0006 ; void main(void)
0006 ; {
0006 ; uchar i;
0006 ; while(1)
0006 ; {
0006 ; for( i = 0; i < 8; i++)
0006 ; {
0006 ; DelayMs(1000);
0006 ; DDRB = 0xff;
0006 ; PORTB ^= (1<<i);//PORTB的第i位取反
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 ; }
0006 .dbline 137
0006 ; }
0006 FA01 movw R30,R20
0008 2080 ldd R2,z+0
000A 3324 clr R3
000C 1AE0 ldi R17,10
000E 022D mov R16,R2
0010 0E940000 xcall mod8u
0014 402E mov R4,R16
0016 1AE0 ldi R17,10
0018 022D mov R16,R2
001A 0E940000 xcall div8u
001E 802F mov R24,R16
0020 8F70 andi R24,#0x0F
0022 8295 swap R24
0024 8429 or R24,R4
0026 FA01 movw R30,R20
0028 8083 std z+0,R24
002A .dbline -2
002A L1:
002A 0E940000 xcall pop_gset1
002E .dbline 0 ; func end
002E 0895 ret
0030 .dbsym r dec 20 pc
0030 .dbend
0030 .dbfunc e ChangeHexToInt _ChangeHexToInt fV
0030 ; hex -> R16,R17
.even
0030 _ChangeHexToInt::
0030 .dbline -1
0030 .dbline 166
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 ; }
0030 .dbline 167
0030 ; }
0030 F801 movw R30,R16
0032 2080 ldd R2,z+0
0034 3324 clr R3
0036 822D mov R24,R2
0038 8295 swap R24
003A 8F70 andi R24,#0x0F
003C 9AE0 ldi R25,10
003E 989F mul R25,R24
0040 822D mov R24,R2
0042 8F70 andi R24,15
0044 202C mov R2,R0
0046 280E add R2,R24
0048 2082 std z+0,R2
004A .dbline -2
004A L2:
004A .dbline 0 ; func end
004A 0895 ret
004C .dbsym r hex 16 pc
004C .dbend
004C .dbfunc e Delay _Delay fV
004C ; i -> R16
.even
004C _Delay::
004C .dbline -1
004C .dbline 180
004C ; }
004C ; }
004C ; }
004C ; }
004C ; }
004C ; }
004C ; }
004C ; }
004C ; }
004C ; }
004C ; }
004C ; }
004C ; }
004C .dbline 182
004C ; }
004C ; }
004C 08EC ldi R16,200
004E L4:
004E .dbline 183
004E L5:
004E .dbline 183
004E ; }
004E 202E mov R2,R16
0050 3324 clr R3
0052 0150 subi R16,1
0054 2220 tst R2
0056 D9F7 brne L4
0058 .dbline -2
0058 L3:
0058 .dbline 0 ; func end
0058 0895 ret
005A .dbsym r i 16 c
005A .dbend
005A .dbfile F:\job\M16学习板\LED显示程序(实验一)\LEDDisp.c
005A .dbfunc e DelayMs _DelayMs fV
005A ; j -> R20
005A ; i -> R16,R17
.even
005A _DelayMs::
005A 0E940000 xcall push_gset1
005E .dbline -1
005E .dbline 22
005E 06C0 xjmp L9
0060 L8:
0060 .dbline 25
0060 .dbline 26
0060 47EA ldi R20,167
0062 L11:
0062 .dbline 27
0062 L12:
0062 .dbline 27
0062 242E mov R2,R20
0064 3324 clr R3
0066 4150 subi R20,1
0068 2220 tst R2
006A D9F7 brne L11
006C .dbline 28
006C L9:
006C .dbline 24
006C 1801 movw R2,R16
006E 0150 subi R16,1
0070 1040 sbci R17,0
0072 2220 tst R2
0074 A9F7 brne L8
0076 3320 tst R3
0078 99F7 brne L8
007A X0:
007A .dbline -2
007A L7:
007A 0E940000 xcall pop_gset1
007E .dbline 0 ; func end
007E 0895 ret
0080 .dbsym r j 20 c
0080 .dbsym r i 16 i
0080 .dbend
0080 .dbfunc e main _main fV
0080 ; i -> R20
.even
0080 _main::
0080 .dbline -1
0080 .dbline 37
0080 11C0 xjmp L16
0082 L15:
0082 .dbline 40
0082 .dbline 41
0082 4427 clr R20
0084 0DC0 xjmp L21
0086 L18:
0086 .dbline 42
0086 .dbline 43
0086 08EE ldi R16,1000
0088 13E0 ldi R17,3
008A E7DF xcall _DelayMs
008C .dbline 44
008C 8FEF ldi R24,255
008E 87BB out 0x17,R24
0090 .dbline 45
0090 01E0 ldi R16,1
0092 142F mov R17,R20
0094 0E940000 xcall lsl8
0098 28B2 in R2,0x18
009A 2026 eor R2,R16
009C 28BA out 0x18,R2
009E .dbline 46
009E L19:
009E .dbline 41
009E 4395 inc R20
00A0 L21:
00A0 .dbline 41
00A0 4830 cpi R20,8
00A2 88F3 brlo L18
00A4 .dbline 47
00A4 L16:
00A4 .dbline 39
00A4 EECF xjmp L15
00A6 X1:
00A6 .dbline -2
00A6 L14:
00A6 .dbline 0 ; func end
00A6 0895 ret
00A8 .dbsym r i 20 c
00A8 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -