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

📄 电量计.lst

📁 《深入浅出AVR单片机——从ATmega48/88/168开始》的实例程序源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
(0075) /***********************************************************
(0076) *   函数说明:软件驱动初始化函数                           *
(0077) *   输入:    无                                           *
(0078) *   输出:    无                                           *
(0079) *   调用函数:无                                           *
(0080) ***********************************************************/
(0081) static void Driver_INIT(void)
(0082) {
_Driver_INIT:
    0066 9508      RET
(0083)     //*在这里插入你的各类软件驱动初始化代码*//
(0084) }
(0085) 
(0086) /***********************************************************
(0087) *   函数说明:系统初始化函数                               *
(0088) *   输入:    无                                           *
(0089) *   输出:    无                                           *
(0090) *   调用函数:Device_INIT() Driver_INIT()                  *
(0091) ***********************************************************/
(0092) void System_INIT(void)
(0093) {
(0094)     CLI();
_System_INIT:
    0067 94F8      BCLR	7
(0095)     
(0096)     Device_INIT();
    0068 DFD2      RCALL	_Device_INIT
(0097)     Driver_INIT();
    0069 DFFC      RCALL	_Driver_INIT
(0098)     
(0099)     //*在这里插入你的系统环境变量初始化代码*//
(0100)     
(0101)     SEI();
    006A 9478      BSET	7
    006B 9508      RET
_Insert_Adc_ISR_Code:
  ADCValue             --> R10
  PORTValue            --> R20
  LoopCounter          --> R22
    006C D04A      RCALL	push_gset3
(0102) }
(0103) 
(0104) /***********************************************************
(0105) *  函数说明:ADC采样完成中断处理程序                       *
(0106) *  输入:    无                                            *
(0107) *  输出:    无                                            *
(0108) ***********************************************************/
(0109) void Insert_Adc_ISR_Code(void)
(0110) {
(0111)     unsigned int ADCValue = ADC;                        //获取ADC10位精度的采样结果
    006D 90A00078  LDS	R10,0x78
    006F 90B00079  LDS	R11,0x79
(0112)     unsigned char LoopCounter = 0,PORTValue = 0;
    0071 2766      CLR	R22
    0072 2744      CLR	R20
(0113) 
(0114)     LoopCounter = ADCValue / 170;                       //转换为端口光柱显示
    0073 EA2A      LDI	R18,0xAA
    0074 E030      LDI	R19,0
    0075 0185      MOVW	R16,R10
    0076 D020      RCALL	div16u
    0077 2F60      MOV	R22,R16
    0078 C006      RJMP	0x007F
(0115) 
(0116)     while(LoopCounter)
(0117)     {
(0118)         PORTValue |= 1<<(LoopCounter-1);
    0079 2F16      MOV	R17,R22
    007A 5011      SUBI	R17,1
    007B E001      LDI	R16,1
    007C D083      RCALL	lsl8
    007D 2B40      OR	R20,R16
(0119)         LoopCounter--;
    007E 956A      DEC	R22
    007F 2366      TST	R22
    0080 F7C1      BNE	0x0079
(0120)     }
(0121) 
(0122)     PORTB = PORTValue ^ 0xFF;                           //由于端口上的LED在低电平时点亮,为了适应习惯
    0081 EF8F      LDI	R24,0xFF
    0082 E090      LDI	R25,0
    0083 2E24      MOV	R2,R20
    0084 2433      CLR	R3
    0085 2628      EOR	R2,R24
    0086 2639      EOR	R3,R25
    0087 B825      OUT	0x05,R2
(0123)                                                         //在这里对端口数据做了反相的处理
(0124)     IfGotADCValue = True;                               //设置采样完成标志
    0088 E081      LDI	R24,1
    0089 93800100  STS	IfGotADCValue,R24
    008B D025      RCALL	pop_gset3
    008C 9508      RET
FILE: D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例13_电量计\实例13_电量计_噪声抑制方式\System.c
(0001) /*********************************************************/
(0002) /*                                                       */
(0003) /*          实例13   电量计 噪声抑制方式                 */
(0004) /*                                                       */
(0005) /*                 程序设计 江海波                       */
(0006) /*                                                       */
(0007) /*        编写时间 : 2007-05     版本 : V1.0             */
(0008) /*                                                       */
(0009) /*     提示 : 代码受版权保护,示例程序用于工程应谨慎      */
(0010) /*                                                       */
(0011) /*           E-mail : soundman@sohu.com                  */
(0012) /*-------------------------------------------------------*/
(0013) /* 硬件环境:                                             */
(0014) /*                                                       */
(0015) /*     实验电路板,ATmega48单片机,CPU时钟1MHz             */
(0016) /* ------------------------------------------------------*/
(0017) /* 软件环境:                                             */
(0018) /*                                                       */
(0019) /*     ICCAVR 6.31A                                      */
(0020) /* ------------------------------------------------------*/
(0021) /* 最后修改时间:                                         */
(0022) /*                                                       */
(0023) /*-------------------------------------------------------*/
(0024) /* 历史版本纪录:                                         */
(0025) /*                                                       */
(0026) /*********************************************************/
(0027) 
(0028) /********************
(0029) * 头 文 件 配 置 区 *
(0030) ********************/
(0031) # include "PF_Config.h"
(0032) 
(0033) /********************
(0034) *   系 统 宏 定 义  *
(0035) ********************/
(0036) 
(0037) /*------------------*
(0038) *   常 数 宏 定 义  *
(0039) *------------------*/
(0040) 
(0041) /*------------------*
(0042) *   动 作 宏 定 义  *
(0043) *------------------*/
(0044) 
(0045) /********************
(0046) *  模块结构体定义区 *
(0047) ********************/
(0048) 
(0049) /********************
(0050) *   模块函数声明区  *
(0051) ********************/
(0052) 
(0053) /********************
(0054) *   模块变量声明区  *
(0055) ********************/
(0056) 
(0057) /***********************************************************
(0058) *   函数说明:主函数                                       *
(0059) *   输入:    无                                           *
(0060) *   输出:    无                                           *
(0061) *   调用函数:System_INIT()                                *
(0062) ***********************************************************/
(0063) void main(void)
(0064) {    
(0065)     System_INIT();                  //代码初始化
_main:
    008D DFD9      RCALL	_System_INIT
    008E C004      RJMP	0x0093
(0066) 
(0067)     while(TRUE)                     //超级循环
(0068)     {
(0069) 		SMCR |= 0x01;				//使能休眠功能
    008F B783      IN	R24,0x33
    0090 6081      ORI	R24,1
    0091 BF83      OUT	0x33,R24
(0070) 		asm("SLEEP");				//休眠CPU,进入ADC噪声抑制模式
FILE: <library>
    0092 9588      SLEEP
    0093 CFFB      RJMP	0x008F
    0094 9508      RET
mod16u:
    0095 9468      BSET	6
    0096 C001      RJMP	xdiv16u
div16u:
    0097 94E8      BCLR	6
xdiv16u:
    0098 92EA      ST	R14,-Y
    0099 92FA      ST	R15,-Y
    009A 938A      ST	R24,-Y
    009B 24EE      CLR	R14
    009C 24FF      CLR	R15
    009D E180      LDI	R24,0x10
    009E 0F00      LSL	R16
    009F 1F11      ROL	R17
    00A0 1CEE      ROL	R14
    00A1 1CFF      ROL	R15
    00A2 16E2      CP	R14,R18
    00A3 06F3      CPC	R15,R19
    00A4 F018      BCS	0x00A8
    00A5 1AE2      SUB	R14,R18
    00A6 0AF3      SBC	R15,R19
    00A7 9503      INC	R16
    00A8 958A      DEC	R24
    00A9 F7A1      BNE	0x009E
    00AA F416      BRTC	0x00AD
    00AB 2D0E      MOV	R16,R14
    00AC 2D1F      MOV	R17,R15
    00AD 9189      LD	R24,Y+
    00AE 90F9      LD	R15,Y+
    00AF 90E9      LD	R14,Y+
    00B0 9508      RET
pop_gset3:
    00B1 E0E4      LDI	R30,4
    00B2 C00C      RJMP	pop
push_gset5:
    00B3 92FA      ST	R15,-Y
    00B4 92EA      ST	R14,-Y
push_gset4:
    00B5 92DA      ST	R13,-Y
    00B6 92CA      ST	R12,-Y
push_gset3:
    00B7 92BA      ST	R11,-Y
    00B8 92AA      ST	R10,-Y
push_gset2:
    00B9 937A      ST	R23,-Y
    00BA 936A      ST	R22,-Y
push_gset1:
    00BB 935A      ST	R21,-Y
    00BC 934A      ST	R20,-Y
    00BD 9508      RET
pop_gset1:
    00BE E0E1      LDI	R30,1
pop:
    00BF 9149      LD	R20,Y+
    00C0 9159      LD	R21,Y+
    00C1 FDE0      SBRC	R30,0
    00C2 9508      RET
    00C3 9169      LD	R22,Y+
    00C4 9179      LD	R23,Y+
    00C5 FDE1      SBRC	R30,1
    00C6 9508      RET
    00C7 90A9      LD	R10,Y+
    00C8 90B9      LD	R11,Y+
    00C9 FDE2      SBRC	R30,2
    00CA 9508      RET
    00CB 90C9      LD	R12,Y+
    00CC 90D9      LD	R13,Y+
    00CD FDE3      SBRC	R30,3
    00CE 9508      RET
    00CF 90E9      LD	R14,Y+
    00D0 90F9      LD	R15,Y+
    00D1 9508      RET
push_lset:
    00D2 93FA      ST	R31,-Y
    00D3 93EA      ST	R30,-Y
    00D4 93BA      ST	R27,-Y
    00D5 93AA      ST	R26,-Y
    00D6 939A      ST	R25,-Y
    00D7 938A      ST	R24,-Y
    00D8 933A      ST	R19,-Y
    00D9 932A      ST	R18,-Y
    00DA 931A      ST	R17,-Y
    00DB 930A      ST	R16,-Y
    00DC 929A      ST	R9,-Y
    00DD 928A      ST	R8,-Y
    00DE 927A      ST	R7,-Y
    00DF 926A      ST	R6,-Y
    00E0 925A      ST	R5,-Y
    00E1 924A      ST	R4,-Y
    00E2 923A      ST	R3,-Y
    00E3 922A      ST	R2,-Y
    00E4 921A      ST	R1,-Y
    00E5 920A      ST	R0,-Y
    00E6 B60F      IN	R0,0x3F
    00E7 920A      ST	R0,-Y
    00E8 9508      RET
pop_lset:
    00E9 9009      LD	R0,Y+
    00EA BE0F      OUT	0x3F,R0
    00EB 9009      LD	R0,Y+
    00EC 9019      LD	R1,Y+
    00ED 9029      LD	R2,Y+
    00EE 9039      LD	R3,Y+
    00EF 9049      LD	R4,Y+
    00F0 9059      LD	R5,Y+
    00F1 9069      LD	R6,Y+
    00F2 9079      LD	R7,Y+
    00F3 9089      LD	R8,Y+
    00F4 9099      LD	R9,Y+
    00F5 9109      LD	R16,Y+
    00F6 9119      LD	R17,Y+
    00F7 9129      LD	R18,Y+
    00F8 9139      LD	R19,Y+
    00F9 9189      LD	R24,Y+
    00FA 9199      LD	R25,Y+
    00FB 91A9      LD	R26,Y+
    00FC 91B9      LD	R27,Y+
    00FD 91E9      LD	R30,Y+
    00FE 91F9      LD	R31,Y+
    00FF 9508      RET
lsl8:
    0100 2311      TST	R17
    0101 F019      BEQ	0x0105
    0102 0F00      LSL	R16
    0103 951A      DEC	R17
    0104 CFFB      RJMP	lsl8
    0105 9508      RET

⌨️ 快捷键说明

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