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

📄 system.lis

📁 《深入浅出AVR单片机——从ATmega48/88/168开始》的实例程序源代码
💻 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 + -