📄 舵机控制.lst
字号:
_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 + -