📄 system.lis
字号:
.module System.c
.area text(rom, con, rel)
0000 .dbfile D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例13_电量计\实例13_电量计_查询方式\System.c
0000 .dbfunc e main _main fV
0000 ; Voltage -> R10,R11
0000 ; Port_Value -> R20
0000 ; Loop_Counter -> R22
.even
0000 _main::
0000 .dbline -1
0000 .dbline 64
0000 ; /*********************************************************/
0000 ; /* */
0000 ; /* 实例13 电量计 查询方式 */
0000 ; /* */
0000 ; /* 程序设计 江海波 */
0000 ; /* */
0000 ; /* 编写时间 : 2007-05 版本 : V1.0 */
0000 ; /* */
0000 ; /* 提示 : 代码受版权保护,示例程序用于工程应谨慎 */
0000 ; /* */
0000 ; /* E-mail : soundman@sohu.com */
0000 ; /*-------------------------------------------------------*/
0000 ; /* 硬件环境: */
0000 ; /* */
0000 ; /* 实验电路板,ATmega48单片机,CPU时钟1MHz */
0000 ; /* ------------------------------------------------------*/
0000 ; /* 软件环境: */
0000 ; /* */
0000 ; /* ICCAVR 6.31A */
0000 ; /* ------------------------------------------------------*/
0000 ; /* 最后修改时间: */
0000 ; /* */
0000 ; /*-------------------------------------------------------*/
0000 ; /* 历史版本纪录: */
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 68
0000 ; unsigned int Voltage;
0000 ; unsigned char Loop_Counter, Port_Value;
0000 ;
0000 ; System_INIT(); //调用初始化器件函数
0000 00D0 rcall _System_INIT
0002 .dbline 70
0002 ;
0002 ; SEI(); //器件初始化完成,允许中断
0002 7894 sei
0004 25C0 rjmp L3
0006 L2:
0006 .dbline 73
0006 ;
0006 ; while(TRUE)
0006 ; {
0006 .dbline 74
0006 ; ADCSRA |= 1<<ADSC; //置位ADSC位,启动一次转换
0006 80917A00 lds R24,122
000A 8064 ori R24,64
000C 80937A00 sts 122,R24
0010 L5:
0010 .dbline 75
0010 L6:
0010 .dbline 75
0010 ; while(!(ADCSRA&(1<<ADIF))); //查询方式等待转换完成
0010 20907A00 lds R2,122
0014 24FE sbrs R2,4
0016 FCCF rjmp L5
0018 .dbline 77
0018 ;
0018 ; Voltage = ADC; //读入ADCH和ADCL中的转换结果
0018 A0907800 lds R10,120
001C B0907900 lds R11,120+1
0020 .dbline 79
0020 ;
0020 ; Loop_Counter = Voltage/170; //转换为光柱显示
0020 2AEA ldi R18,170
0022 30E0 ldi R19,0
0024 8501 movw R16,R10
0026 00D0 rcall div16u
0028 602F mov R22,R16
002A .dbline 81
002A ;
002A ; Port_Value = 0x00;
002A 4427 clr R20
002C 06C0 rjmp L9
002E L8:
002E .dbline 83
002E .dbline 84
002E 162F mov R17,R22
0030 1150 subi R17,1
0032 01E0 ldi R16,1
0034 00D0 rcall lsl8
0036 402B or R20,R16
0038 .dbline 85
0038 6A95 dec R22
003A .dbline 86
003A L9:
003A .dbline 82
003A 2224 clr R2
003C 2616 cp R2,R22
003E B8F3 brlo L8
0040 .dbline 88
0040 8FEF ldi R24,255
0042 90E0 ldi R25,0
0044 242E mov R2,R20
0046 3324 clr R3
0048 2826 eor R2,R24
004A 3926 eor R3,R25
004C 422D mov R20,R2
004E .dbline 89
004E 25B8 out 0x5,R2
0050 .dbline 90
0050 L3:
0050 .dbline 72
0050 DACF rjmp L2
0052 X0:
0052 .dbline -2
0052 L1:
0052 .dbline 0 ; func end
0052 0895 ret
0054 .dbsym r Voltage 10 i
0054 .dbsym r Port_Value 20 c
0054 .dbsym r Loop_Counter 22 c
0054 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -