📄 system.lis
字号:
.module System.c
.area text(rom, con, rel)
0000 .dbfile D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例11_渐明渐暗的灯\舵机控制\System.c
0000 .dbfunc e main _main fV
0000 ; wPosition -> R20,R21
.even
0000 _main::
0000 .dbline -1
0000 .dbline 70
0000 ; /*********************************************************/
0000 ; /* */
0000 ; /* 实例11 渐明渐暗的灯 */
0000 ; /* */
0000 ; /* 扩展实验部分——舵机控制 */
0000 ; /* */
0000 ; /* 程序设计 江海波 */
0000 ; /* */
0000 ; /* 编写时间 : 2007-08 版本 : V1.1 */
0000 ; /* */
0000 ; /* 提示 : 代码受版权保护,示例程序用于工程应谨慎 */
0000 ; /* */
0000 ; /* E-mail : soundman@sohu.com */
0000 ; /*-------------------------------------------------------*/
0000 ; /* 硬件环境: */
0000 ; /* */
0000 ; /* 实验电路板,ATmega48单片机,CPU时钟1MHz */
0000 ; /* ------------------------------------------------------*/
0000 ; /* 软件环境: */
0000 ; /* */
0000 ; /* ICCAVR 7.13A */
0000 ; /* ------------------------------------------------------*/
0000 ; /* 最后修改时间: */
0000 ; /* 2007年8月15日 王卓然 */
0000 ; /*-------------------------------------------------------*/
0000 ; /* 历史版本纪录: */
0000 ; /* v1.1 修改了原来采用软件模拟输出PWM的方式,改由 */
0000 ; /* 硬件发生,减小了资源消耗。将原来使用OC1引 */
0000 ; /* 脚进行的输出移动到了OC1A上。通过宏 */
0000 ; /* SET_POSITION()可以进行PWM设定。宏已经作了 */
0000 ; /* 输入输出范围限定。 */
0000 ; /*********************************************************/
0000 ;
0000 ; /********************
0000 ; * 头 文 件 配 置 区 *
0000 ; ********************/
0000 ; #include "PF_Config.h"
0000 ;
0000 ; /********************
0000 ; * 系 统 宏 定 义 *
0000 ; ********************/
0000 ;
0000 ; /*------------------*
0000 ; * 常 数 宏 定 义 *
0000 ; *------------------*/
0000 ;
0000 ; /*------------------*
0000 ; * 动 作 宏 定 义 *
0000 ; *------------------*/
0000 ;
0000 ; /********************
0000 ; * 模块结构体定义区 *
0000 ; ********************/
0000 ;
0000 ; /********************
0000 ; * 模块函数声明区 *
0000 ; ********************/
0000 ;
0000 ; /********************
0000 ; * 模块变量声明区 *
0000 ; ********************/
0000 ;
0000 ; /***********************************************************
0000 ; * 函数说明:主函数 *
0000 ; * 输入: 无 *
0000 ; * 输出: 无 *
0000 ; * 调用函数:System_INIT() *
0000 ; ***********************************************************/
0000 ; void main(void)
0000 ; {
0000 .dbline 71
0000 ; uint16 wPosition = 0;
0000 4427 clr R20
0002 5527 clr R21
0004 .dbline 72
0004 ; System_INIT(); //代码初始化
0004 00D0 rcall _System_INIT
0006 53C0 rjmp L3
0008 L2:
0008 .dbline 75
0008 ;
0008 ; while(TRUE) //超级循环
0008 ; {
0008 .dbline 76
0008 ; wPosition = 250;
0008 4AEF ldi R20,250
000A 50E0 ldi R21,0
000C .dbline 77
000C ; for (wPosition = 250;wPosition < 1250;wPosition+=10)
000C 23C0 rjmp L8
000E L5:
000E .dbline 78
000E ; {
000E .dbline 79
000E ; SET_POSITION(wPosition);
000E 423E cpi R20,226
0010 E4E0 ldi R30,4
0012 5E07 cpc R21,R30
0014 10F4 brsh L11
0016 BA01 movw R22,R20
0018 02C0 rjmp L12
001A L11:
001A 62EE ldi R22,1250
001C 74E0 ldi R23,4
001E L12:
001E 8AEF ldi R24,250
0020 90E0 ldi R25,0
0022 8617 cp R24,R22
0024 9707 cpc R25,R23
0026 58F4 brsh L9
0028 423E cpi R20,226
002A E4E0 ldi R30,4
002C 5E07 cpc R21,R30
002E 10F4 brsh L13
0030 5A01 movw R10,R20
0032 03C0 rjmp L14
0034 L13:
0034 82EE ldi R24,1250
0036 94E0 ldi R25,4
0038 5C01 movw R10,R24
003A L14:
003A B501 movw R22,R10
003C 02C0 rjmp L10
003E L9:
003E 6AEF ldi R22,250
0040 70E0 ldi R23,0
0042 L10:
0042 70938900 sts 136+1,R23
0046 60938800 sts 136,R22
004A .dbline 79
004A .dbline 80
004A 02E3 ldi R16,50
004C 10E0 ldi R17,0
004E 00D0 rcall _Delay_MS
0050 .dbline 81
0050 L6:
0050 .dbline 77
0050 465F subi R20,246 ; offset = 10
0052 5F4F sbci R21,255
0054 L8:
0054 .dbline 77
0054 423E cpi R20,226
0056 E4E0 ldi R30,4
0058 5E07 cpc R21,R30
005A C8F2 brlo L5
005C .dbline 83
005C ; Delay_MS(50);
005C ; }
005C ;
005C ; for (;wPosition >250;wPosition-=10)
005C 23C0 rjmp L18
005E L15:
005E .dbline 84
005E ; {
005E .dbline 85
005E ; SET_POSITION(wPosition);
005E 423E cpi R20,226
0060 E4E0 ldi R30,4
0062 5E07 cpc R21,R30
0064 10F4 brsh L21
0066 BA01 movw R22,R20
0068 02C0 rjmp L22
006A L21:
006A 62EE ldi R22,1250
006C 74E0 ldi R23,4
006E L22:
006E 8AEF ldi R24,250
0070 90E0 ldi R25,0
0072 8617 cp R24,R22
0074 9707 cpc R25,R23
0076 58F4 brsh L19
0078 423E cpi R20,226
007A E4E0 ldi R30,4
007C 5E07 cpc R21,R30
007E 10F4 brsh L23
0080 5A01 movw R10,R20
0082 03C0 rjmp L24
0084 L23:
0084 82EE ldi R24,1250
0086 94E0 ldi R25,4
0088 5C01 movw R10,R24
008A L24:
008A B501 movw R22,R10
008C 02C0 rjmp L20
008E L19:
008E 6AEF ldi R22,250
0090 70E0 ldi R23,0
0092 L20:
0092 70938900 sts 136+1,R23
0096 60938800 sts 136,R22
009A .dbline 85
009A .dbline 86
009A 02E3 ldi R16,50
009C 10E0 ldi R17,0
009E 00D0 rcall _Delay_MS
00A0 .dbline 87
00A0 L16:
00A0 .dbline 83
00A0 4A50 subi R20,10
00A2 5040 sbci R21,0
00A4 L18:
00A4 .dbline 83
00A4 8AEF ldi R24,250
00A6 90E0 ldi R25,0
00A8 8417 cp R24,R20
00AA 9507 cpc R25,R21
00AC C0F2 brlo L15
00AE .dbline 88
00AE L3:
00AE .dbline 74
00AE ACCF rjmp L2
00B0 X0:
00B0 .dbline -2
00B0 L1:
00B0 .dbline 0 ; func end
00B0 0895 ret
00B2 .dbsym r wPosition 20 i
00B2 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -