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

📄 舵机控制.lst

📁 《深入浅出AVR单片机——从ATmega48/88/168开始》的实例程序源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
_Driver_INIT:
    0071 9508      RET
(0087)     //*在这里插入你的各类软件驱动初始化代码*//
(0088) }
(0089) 
(0090) /***********************************************************
(0091) *   函数说明:系统初始化函数                               *
(0092) *   输入:    无                                           *
(0093) *   输出:    无                                           *
(0094) *   调用函数:Device_INIT() Driver_INIT()                  *
(0095) ***********************************************************/
(0096) void System_INIT(void)
(0097) {
(0098)     CLI();
_System_INIT:
    0072 94F8      BCLR	7
(0099) 
(0100)     Device_INIT();
    0073 DFC8      RCALL	_Device_INIT
(0101)     Driver_INIT();
    0074 DFFC      RCALL	_Driver_INIT
(0102) 
(0103)     //*在这里插入你的系统环境变量初始化代码*//
(0104) 
(0105)     SEI();
    0075 9478      BSET	7
    0076 9508      RET
(0106) }
(0107) 
(0108) /***********************************************************
(0109) *   函数说明:系统毫秒延时函数                             *
(0110) *   输入:    需要延时的时间长度                           *
(0111) *   输出:    无                                           *
(0112) *   调用函数:无                                           *
(0113) ***********************************************************/
(0114) void Delay_MS(uint16 wTime)
(0115) {
(0116)     s_wSystemDelayTimerCounter = wTime;
_Delay_MS:
  wTime                --> R16
    0077 93100101  STS	s_wSystemDelayTimerCounter+1,R17
    0079 93000100  STS	s_wSystemDelayTimerCounter,R16
(0117) 
(0118)     while(s_wSystemDelayTimerCounter);
    007B 90200100  LDS	R2,s_wSystemDelayTimerCounter
    007D 90300101  LDS	R3,s_wSystemDelayTimerCounter+1
    007F 2022      TST	R2
    0080 F7D1      BNE	0x007B
    0081 2033      TST	R3
    0082 F7C1      BNE	0x007B
    0083 9508      RET
(0119) }
(0120) 
(0121) /***********************************************************
(0122) *   函数说明:定时器0中断处理程序代码插入函数              *
(0123) *   输入:    无                                           *
(0124) *   输出:    无                                           *
(0125) *   调用函数:无                                           *
(0126) ***********************************************************/
(0127) void Insert_Timer0_OVF_ISR_Code (void)
(0128) {
(0129)     g_wSystemTimer++;
_Insert_Timer0_OVF_ISR_Code:
    0084 91800102  LDS	R24,g_wSystemTimer
    0086 91900103  LDS	R25,g_wSystemTimer+1
    0088 9601      ADIW	R24,1
    0089 93900103  STS	g_wSystemTimer+1,R25
    008B 93800102  STS	g_wSystemTimer,R24
(0130) 
(0131)     if (s_wSystemDelayTimerCounter)
    008D 90200100  LDS	R2,s_wSystemDelayTimerCounter
    008F 90300101  LDS	R3,s_wSystemDelayTimerCounter+1
    0091 2022      TST	R2
    0092 F411      BNE	0x0095
    0093 2033      TST	R3
    0094 F049      BEQ	0x009E
(0132)     {
(0133)         s_wSystemDelayTimerCounter--;
    0095 91800100  LDS	R24,s_wSystemDelayTimerCounter
    0097 91900101  LDS	R25,s_wSystemDelayTimerCounter+1
    0099 9701      SBIW	R24,1
    009A 93900101  STS	s_wSystemDelayTimerCounter+1,R25
    009C 93800100  STS	s_wSystemDelayTimerCounter,R24
(0134)     }
(0135) 
(0136)     if (!(g_wSystemTimer & 0x01FF))
    009E 91800102  LDS	R24,g_wSystemTimer
    00A0 91900103  LDS	R25,g_wSystemTimer+1
    00A2 7091      ANDI	R25,1
    00A3 3080      CPI	R24,0
    00A4 0789      CPC	R24,R25
    00A5 F421      BNE	0x00AA
(0137)     {
(0138)         PORTC ^= BIT(PC5);                                  //工作指示灯闪烁控制
    00A6 E280      LDI	R24,0x20
    00A7 B028      IN	R2,0x08
    00A8 2628      EOR	R2,R24
    00A9 B828      OUT	0x08,R2
(0139)     }
    00AA 9508      RET
FILE: D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例11_渐明渐暗的灯\舵机控制\System.c
(0001) /*********************************************************/
(0002) /*                                                       */
(0003) /*               实例11 渐明渐暗的灯                     */
(0004) /*                                                       */
(0005) /*              扩展实验部分——舵机控制                 */
(0006) /*                                                       */
(0007) /*                 程序设计 江海波                       */
(0008) /*                                                       */
(0009) /*        编写时间 : 2007-08     版本 : V1.1             */
(0010) /*                                                       */
(0011) /*     提示 : 代码受版权保护,示例程序用于工程应谨慎      */
(0012) /*                                                       */
(0013) /*           E-mail : soundman@sohu.com                  */
(0014) /*-------------------------------------------------------*/
(0015) /* 硬件环境:                                             */
(0016) /*                                                       */
(0017) /*     实验电路板,ATmega48单片机,CPU时钟1MHz             */
(0018) /* ------------------------------------------------------*/
(0019) /* 软件环境:                                             */
(0020) /*                                                       */
(0021) /*     ICCAVR 7.13A                                      */
(0022) /* ------------------------------------------------------*/
(0023) /* 最后修改时间:                                         */
(0024) /*     2007年8月15日   王卓然                            */
(0025) /*-------------------------------------------------------*/
(0026) /* 历史版本纪录:                                         */
(0027) /*     v1.1  修改了原来采用软件模拟输出PWM的方式,改由   */
(0028) /*           硬件发生,减小了资源消耗。将原来使用OC1引   */
(0029) /*           脚进行的输出移动到了OC1A上。通过宏          */
(0030) /*           SET_POSITION()可以进行PWM设定。宏已经作了   */
(0031) /*           输入输出范围限定。                          */
(0032) /*********************************************************/
(0033) 
(0034) /********************
(0035) * 头 文 件 配 置 区 *
(0036) ********************/
(0037) #include "PF_Config.h"
(0038) 
(0039) /********************
(0040) *   系 统 宏 定 义  *
(0041) ********************/
(0042) 
(0043) /*------------------*
(0044) *   常 数 宏 定 义  *
(0045) *------------------*/
(0046) 
(0047) /*------------------*
(0048) *   动 作 宏 定 义  *
(0049) *------------------*/
(0050) 
(0051) /********************
(0052) *  模块结构体定义区 *
(0053) ********************/
(0054) 
(0055) /********************
(0056) *   模块函数声明区  *
(0057) ********************/
(0058) 
(0059) /********************
(0060) *   模块变量声明区  *
(0061) ********************/
(0062) 
(0063) /***********************************************************
(0064) *   函数说明:主函数                                       *
(0065) *   输入:    无                                           *
(0066) *   输出:    无                                           *
(0067) *   调用函数:System_INIT()                                *
(0068) ***********************************************************/
(0069) void main(void)
(0070) {
(0071)     uint16 wPosition = 0;
_main:
  wPosition            --> R20
    00AB 2744      CLR	R20
    00AC 2755      CLR	R21
(0072)     System_INIT();                                          //代码初始化
    00AD DFC4      RCALL	_System_INIT
    00AE C053      RJMP	0x0102
(0073) 
(0074)     while(TRUE)                                             //超级循环
(0075)     {
(0076)         wPosition = 250;
    00AF EF4A      LDI	R20,0xFA
    00B0 E050      LDI	R21,0
(0077)         for (wPosition = 250;wPosition < 1250;wPosition+=10)
    00B1 C023      RJMP	0x00D5
(0078)         {
(0079)             SET_POSITION(wPosition);
    00B2 3E42      CPI	R20,0xE2
    00B3 E0E4      LDI	R30,4
    00B4 075E      CPC	R21,R30
    00B5 F410      BCC	0x00B8
    00B6 01BA      MOVW	R22,R20
    00B7 C002      RJMP	0x00BA
    00B8 EE62      LDI	R22,0xE2
    00B9 E074      LDI	R23,4
    00BA EF8A      LDI	R24,0xFA
    00BB E090      LDI	R25,0
    00BC 1786      CP	R24,R22
    00BD 0797      CPC	R25,R23
    00BE F458      BCC	0x00CA
    00BF 3E42      CPI	R20,0xE2
    00C0 E0E4      LDI	R30,4
    00C1 075E      CPC	R21,R30
    00C2 F410      BCC	0x00C5
    00C3 015A      MOVW	R10,R20
    00C4 C003      RJMP	0x00C8
    00C5 EE82      LDI	R24,0xE2
    00C6 E094      LDI	R25,4
    00C7 015C      MOVW	R10,R24
    00C8 01B5      MOVW	R22,R10
    00C9 C002      RJMP	0x00CC
    00CA EF6A      LDI	R22,0xFA
    00CB E070      LDI	R23,0
    00CC 93700089  STS	0x89,R23
    00CE 93600088  STS	0x88,R22
(0080)             Delay_MS(50);
    00D0 E302      LDI	R16,0x32
    00D1 E010      LDI	R17,0
    00D2 DFA4      RCALL	_Delay_MS
    00D3 5F46      SUBI	R20,0xF6
    00D4 4F5F      SBCI	R21,0xFF
    00D5 3E42      CPI	R20,0xE2
    00D6 E0E4      LDI	R30,4
    00D7 075E      CPC	R21,R30
    00D8 F2C8      BCS	0x00B2
(0081)         }
(0082) 
(0083)         for (;wPosition >250;wPosition-=10)
    00D9 C023      RJMP	0x00FD
(0084)         {
(0085)             SET_POSITION(wPosition);
    00DA 3E42      CPI	R20,0xE2
    00DB E0E4      LDI	R30,4
    00DC 075E      CPC	R21,R30
    00DD F410      BCC	0x00E0
    00DE 01BA      MOVW	R22,R20
    00DF C002      RJMP	0x00E2
    00E0 EE62      LDI	R22,0xE2
    00E1 E074      LDI	R23,4
    00E2 EF8A      LDI	R24,0xFA
    00E3 E090      LDI	R25,0
    00E4 1786      CP	R24,R22
    00E5 0797      CPC	R25,R23
    00E6 F458      BCC	0x00F2
    00E7 3E42      CPI	R20,0xE2
    00E8 E0E4      LDI	R30,4
    00E9 075E      CPC	R21,R30
    00EA F410      BCC	0x00ED
    00EB 015A      MOVW	R10,R20
    00EC C003      RJMP	0x00F0
    00ED EE82      LDI	R24,0xE2
    00EE E094      LDI	R25,4
    00EF 015C      MOVW	R10,R24
    00F0 01B5      MOVW	R22,R10
    00F1 C002      RJMP	0x00F4
    00F2 EF6A      LDI	R22,0xFA
    00F3 E070      LDI	R23,0
    00F4 93700089  STS	0x89,R23
    00F6 93600088  STS	0x88,R22
(0086)             Delay_MS(50);
FILE: <library>
    00F8 E302      LDI	R16,0x32
    00F9 E010      LDI	R17,0
    00FA DF7C      RCALL	_Delay_MS
    00FB 504A      SUBI	R20,0xA
    00FC 4050      SBCI	R21,0
    00FD EF8A      LDI	R24,0xFA
    00FE E090      LDI	R25,0
    00FF 1784      CP	R24,R20
    0100 0795      CPC	R25,R21
    0101 F2C0      BCS	0x00DA
    0102 CFAC      RJMP	0x00AF
    0103 9508      RET
push_lset:
    0104 93FA      ST	R31,-Y
    0105 93EA      ST	R30,-Y
    0106 93BA      ST	R27,-Y
    0107 93AA      ST	R26,-Y
    0108 939A      ST	R25,-Y
    0109 938A      ST	R24,-Y
    010A 933A      ST	R19,-Y
    010B 932A      ST	R18,-Y
    010C 931A      ST	R17,-Y
    010D 930A      ST	R16,-Y
    010E 929A      ST	R9,-Y
    010F 928A      ST	R8,-Y
    0110 927A      ST	R7,-Y
    0111 926A      ST	R6,-Y
    0112 925A      ST	R5,-Y
    0113 924A      ST	R4,-Y
    0114 923A      ST	R3,-Y
    0115 922A      ST	R2,-Y
    0116 921A      ST	R1,-Y
    0117 920A      ST	R0,-Y
    0118 B60F      IN	R0,0x3F
    0119 920A      ST	R0,-Y
    011A 9508      RET
pop_lset:
    011B 9009      LD	R0,Y+
    011C BE0F      OUT	0x3F,R0
    011D 9009      LD	R0,Y+
    011E 9019      LD	R1,Y+
    011F 9029      LD	R2,Y+
    0120 9039      LD	R3,Y+
    0121 9049      LD	R4,Y+
    0122 9059      LD	R5,Y+
    0123 9069      LD	R6,Y+
    0124 9079      LD	R7,Y+
    0125 9089      LD	R8,Y+
    0126 9099      LD	R9,Y+
    0127 9109      LD	R16,Y+
    0128 9119      LD	R17,Y+
    0129 9129      LD	R18,Y+
    012A 9139      LD	R19,Y+
    012B 9189      LD	R24,Y+
    012C 9199      LD	R25,Y+
    012D 91A9      LD	R26,Y+
    012E 91B9      LD	R27,Y+
    012F 91E9      LD	R30,Y+
    0130 91F9      LD	R31,Y+
    0131 9508      RET

⌨️ 快捷键说明

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