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

📄 system.s

📁 《深入浅出AVR单片机——从ATmega48/88/168开始》的实例程序源代码
💻 S
字号:
	.module System.c
	.area text(rom, con, rel)
	.dbfile D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例11_渐明渐暗的灯\舵机控制\System.c
	.dbfunc e main _main fV
;      wPosition -> R20,R21
	.even
_main::
	.dbline -1
	.dbline 70
; /*********************************************************/
; /*                                                       */
; /*               实例11 渐明渐暗的灯                     */
; /*                                                       */
; /*              扩展实验部分——舵机控制                 */
; /*                                                       */
; /*                 程序设计 江海波                       */
; /*                                                       */
; /*        编写时间 : 2007-08     版本 : V1.1             */
; /*                                                       */
; /*     提示 : 代码受版权保护,示例程序用于工程应谨慎      */
; /*                                                       */
; /*           E-mail : soundman@sohu.com                  */
; /*-------------------------------------------------------*/
; /* 硬件环境:                                             */
; /*                                                       */
; /*     实验电路板,ATmega48单片机,CPU时钟1MHz             */
; /* ------------------------------------------------------*/
; /* 软件环境:                                             */
; /*                                                       */
; /*     ICCAVR 7.13A                                      */
; /* ------------------------------------------------------*/
; /* 最后修改时间:                                         */
; /*     2007年8月15日   王卓然                            */
; /*-------------------------------------------------------*/
; /* 历史版本纪录:                                         */
; /*     v1.1  修改了原来采用软件模拟输出PWM的方式,改由   */
; /*           硬件发生,减小了资源消耗。将原来使用OC1引   */
; /*           脚进行的输出移动到了OC1A上。通过宏          */
; /*           SET_POSITION()可以进行PWM设定。宏已经作了   */
; /*           输入输出范围限定。                          */
; /*********************************************************/
; 
; /********************
; * 头 文 件 配 置 区 *
; ********************/
; #include "PF_Config.h"
; 
; /********************
; *   系 统 宏 定 义  *
; ********************/
; 
; /*------------------*
; *   常 数 宏 定 义  *
; *------------------*/
; 
; /*------------------*
; *   动 作 宏 定 义  *
; *------------------*/
; 
; /********************
; *  模块结构体定义区 *
; ********************/
; 
; /********************
; *   模块函数声明区  *
; ********************/
; 
; /********************
; *   模块变量声明区  *
; ********************/
; 
; /***********************************************************
; *   函数说明:主函数                                       *
; *   输入:    无                                           *
; *   输出:    无                                           *
; *   调用函数:System_INIT()                                *
; ***********************************************************/
; void main(void)
; {
	.dbline 71
;     uint16 wPosition = 0;
	clr R20
	clr R21
	.dbline 72
;     System_INIT();                                          //代码初始化
	rcall _System_INIT
	rjmp L3
L2:
	.dbline 75
; 
;     while(TRUE)                                             //超级循环
;     {
	.dbline 76
;         wPosition = 250;
	ldi R20,250
	ldi R21,0
	.dbline 77
;         for (wPosition = 250;wPosition < 1250;wPosition+=10)
	rjmp L8
L5:
	.dbline 78
;         {
	.dbline 79
;             SET_POSITION(wPosition);
	cpi R20,226
	ldi R30,4
	cpc R21,R30
	brsh L11
	movw R22,R20
	rjmp L12
L11:
	ldi R22,1250
	ldi R23,4
L12:
	ldi R24,250
	ldi R25,0
	cp R24,R22
	cpc R25,R23
	brsh L9
	cpi R20,226
	ldi R30,4
	cpc R21,R30
	brsh L13
	movw R10,R20
	rjmp L14
L13:
	ldi R24,1250
	ldi R25,4
	movw R10,R24
L14:
	movw R22,R10
	rjmp L10
L9:
	ldi R22,250
	ldi R23,0
L10:
	sts 136+1,R23
	sts 136,R22
	.dbline 79
	.dbline 80
	ldi R16,50
	ldi R17,0
	rcall _Delay_MS
	.dbline 81
L6:
	.dbline 77
	subi R20,246  ; offset = 10
	sbci R21,255
L8:
	.dbline 77
	cpi R20,226
	ldi R30,4
	cpc R21,R30
	brlo L5
	.dbline 83
;             Delay_MS(50);
;         }
; 
;         for (;wPosition >250;wPosition-=10)
	rjmp L18
L15:
	.dbline 84
;         {
	.dbline 85
;             SET_POSITION(wPosition);
	cpi R20,226
	ldi R30,4
	cpc R21,R30
	brsh L21
	movw R22,R20
	rjmp L22
L21:
	ldi R22,1250
	ldi R23,4
L22:
	ldi R24,250
	ldi R25,0
	cp R24,R22
	cpc R25,R23
	brsh L19
	cpi R20,226
	ldi R30,4
	cpc R21,R30
	brsh L23
	movw R10,R20
	rjmp L24
L23:
	ldi R24,1250
	ldi R25,4
	movw R10,R24
L24:
	movw R22,R10
	rjmp L20
L19:
	ldi R22,250
	ldi R23,0
L20:
	sts 136+1,R23
	sts 136,R22
	.dbline 85
	.dbline 86
	ldi R16,50
	ldi R17,0
	rcall _Delay_MS
	.dbline 87
L16:
	.dbline 83
	subi R20,10
	sbci R21,0
L18:
	.dbline 83
	ldi R24,250
	ldi R25,0
	cp R24,R20
	cpc R25,R21
	brlo L15
	.dbline 88
L3:
	.dbline 74
	rjmp L2
X0:
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r wPosition 20 i
	.dbend

⌨️ 快捷键说明

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