📄 system.s
字号:
.module System.c
.area text(rom, con, rel)
.dbfile D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例13_电量计\实例13_电量计_查询方式\System.c
.dbfunc e main _main fV
; Voltage -> R10,R11
; Port_Value -> R20
; Loop_Counter -> R22
.even
_main::
.dbline -1
.dbline 64
; /*********************************************************/
; /* */
; /* 实例13 电量计 查询方式 */
; /* */
; /* 程序设计 江海波 */
; /* */
; /* 编写时间 : 2007-05 版本 : V1.0 */
; /* */
; /* 提示 : 代码受版权保护,示例程序用于工程应谨慎 */
; /* */
; /* E-mail : soundman@sohu.com */
; /*-------------------------------------------------------*/
; /* 硬件环境: */
; /* */
; /* 实验电路板,ATmega48单片机,CPU时钟1MHz */
; /* ------------------------------------------------------*/
; /* 软件环境: */
; /* */
; /* ICCAVR 6.31A */
; /* ------------------------------------------------------*/
; /* 最后修改时间: */
; /* */
; /*-------------------------------------------------------*/
; /* 历史版本纪录: */
; /* */
; /*********************************************************/
;
; /********************
; * 头 文 件 配 置 区 *
; ********************/
; # include "PF_Config.h"
;
; /********************
; * 系 统 宏 定 义 *
; ********************/
;
; /*------------------*
; * 常 数 宏 定 义 *
; *------------------*/
;
; /*------------------*
; * 动 作 宏 定 义 *
; *------------------*/
;
; /********************
; * 模块结构体定义区 *
; ********************/
;
; /********************
; * 模块函数声明区 *
; ********************/
;
; /********************
; * 模块变量声明区 *
; ********************/
;
; /***********************************************************
; * 函数说明:主函数 *
; * 输入: 无 *
; * 输出: 无 *
; * 调用函数:System_INIT() *
; ***********************************************************/
; void main(void)
; {
.dbline 68
; unsigned int Voltage;
; unsigned char Loop_Counter, Port_Value;
;
; System_INIT(); //调用初始化器件函数
rcall _System_INIT
.dbline 70
;
; SEI(); //器件初始化完成,允许中断
sei
rjmp L3
L2:
.dbline 73
;
; while(TRUE)
; {
.dbline 74
; ADCSRA |= 1<<ADSC; //置位ADSC位,启动一次转换
lds R24,122
ori R24,64
sts 122,R24
L5:
.dbline 75
L6:
.dbline 75
; while(!(ADCSRA&(1<<ADIF))); //查询方式等待转换完成
lds R2,122
sbrs R2,4
rjmp L5
.dbline 77
;
; Voltage = ADC; //读入ADCH和ADCL中的转换结果
lds R10,120
lds R11,120+1
.dbline 79
;
; Loop_Counter = Voltage/170; //转换为光柱显示
ldi R18,170
ldi R19,0
movw R16,R10
rcall div16u
mov R22,R16
.dbline 81
;
; Port_Value = 0x00;
clr R20
rjmp L9
L8:
.dbline 83
.dbline 84
mov R17,R22
subi R17,1
ldi R16,1
rcall lsl8
or R20,R16
.dbline 85
dec R22
.dbline 86
L9:
.dbline 82
clr R2
cp R2,R22
brlo L8
.dbline 88
ldi R24,255
ldi R25,0
mov R2,R20
clr R3
eor R2,R24
eor R3,R25
mov R20,R2
.dbline 89
out 0x5,R2
.dbline 90
L3:
.dbline 72
rjmp L2
X0:
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r Voltage 10 i
.dbsym r Port_Value 20 c
.dbsym r Loop_Counter 22 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -