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

📄 system.s

📁 《深入浅出AVR单片机——从ATmega48/88/168开始》的实例程序源代码
💻 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 + -