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

📄 ac20-1.lis

📁 AVR单片机ATmega16(L)应用实例—红外线感应自动移门
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module ac20-1.c
                        .area lit(rom, con, rel)
 0000           _seg::
 0000 3F06              .byte 63,6
 0002 5B4F              .byte 91,'O
 0004 666D              .byte 'f,'m
 0006 7D07              .byte 125,7
 0008 7F6F              .byte 127,'o
 000A                   .dbfile d:\MYDOCU~1\ac20-1\ac20-1.c
 000A                   .dbsym e seg _seg A[10:10]kc
 000A           _act::
 000A DFBF              .byte 223,191
 000C 7FEF              .byte 127,239
 000E                   .dbsym e act _act A[4:4]kc
                        .area data(ram, con, rel)
 0000                   .dbfile d:\MYDOCU~1\ac20-1\ac20-1.c
 0000           _stoptime::
 0000                   .blkb 1
                        .area idata
 0000 03                .byte 3
                        .area data(ram, con, rel)
 0001                   .dbfile d:\MYDOCU~1\ac20-1\ac20-1.c
 0001                   .dbsym e stoptime _stoptime c
 0001           _study_speed_temp::
 0001                   .blkb 1
                        .area idata
 0001 04                .byte 4
                        .area data(ram, con, rel)
 0002                   .dbfile d:\MYDOCU~1\ac20-1\ac20-1.c
 0002                   .dbsym e study_speed_temp _study_speed_temp c
 0002           _open_max_temp::
 0002                   .blkb 1
                        .area idata
 0002 04                .byte 4
                        .area data(ram, con, rel)
 0003                   .dbfile d:\MYDOCU~1\ac20-1\ac20-1.c
 0003                   .dbsym e open_max_temp _open_max_temp c
 0003           _open_min_temp::
 0003                   .blkb 1
                        .area idata
 0003 04                .byte 4
                        .area data(ram, con, rel)
 0004                   .dbfile d:\MYDOCU~1\ac20-1\ac20-1.c
 0004                   .dbsym e open_min_temp _open_min_temp c
 0004           _close_max_temp::
 0004                   .blkb 1
                        .area idata
 0004 01                .byte 1
                        .area data(ram, con, rel)
 0005                   .dbfile d:\MYDOCU~1\ac20-1\ac20-1.c
 0005                   .dbsym e close_max_temp _close_max_temp c
 0005           _close_min_temp::
 0005                   .blkb 1
                        .area idata
 0005 04                .byte 4
                        .area data(ram, con, rel)
 0006                   .dbfile d:\MYDOCU~1\ac20-1\ac20-1.c
 0006                   .dbsym e close_min_temp _close_min_temp c
                        .area lit(rom, con, rel)
 000E           _stoptime_tab::
 000E F401              .word 500
 0010 E803              .word 1000
 0012 D007              .word 2000
 0014 B80B              .word 3000
 0016 A00F              .word 4000
 0018 8813              .word 5000
 001A 7017              .word 6000
 001C 581B              .word 7000
 001E 401F              .word 8000
 0020 2823              .word 9000
 0022                   .dbsym e stoptime_tab _stoptime_tab A[20:10]ki
 0022           _round_cnt_tab::
 0022 0506              .byte 5,6
 0024 0708              .byte 7,8
 0026 090A              .byte 9,10
 0028 0F14              .byte 15,20
 002A 191E              .byte 25,30
 002C                   .dbsym e round_cnt_tab _round_cnt_tab A[10:10]kc
 002C           _study_speed_tab::
 002C 0507              .byte 5,7
 002E 090B              .byte 9,11
 0030 0D0F              .byte 13,15
 0032 1419              .byte 20,25
 0034 1E23              .byte 30,35
 0036                   .dbsym e study_speed_tab _study_speed_tab A[10:10]kc
 0036           _open_max_tab::
 0036 6478              .byte 'd,'x
 0038 8C96              .byte 140,150
 003A 9BA0              .byte 155,160
 003C A5AA              .byte 165,170
 003E AFB4              .byte 175,180
 0040                   .dbsym e open_max_tab _open_max_tab A[10:10]kc
 0040           _open_min_tab::
 0040 0507              .byte 5,7
 0042 0809              .byte 8,9
 0044 0A0F              .byte 10,15
 0046 1419              .byte 20,25
 0048 1E23              .byte 30,35
 004A                   .dbsym e open_min_tab _open_min_tab A[10:10]kc
 004A           _close_max_tab::
 004A 6478              .byte 'd,'x
 004C 8C96              .byte 140,150
 004E 9BA0              .byte 155,160
 0050 A5AA              .byte 165,170
 0052 AFB4              .byte 175,180
 0054                   .dbsym e close_max_tab _close_max_tab A[10:10]kc
 0054           _close_min_tab::
 0054 0507              .byte 5,7
 0056 0809              .byte 8,9
 0058 0A0F              .byte 10,15
 005A 1419              .byte 20,25
 005C 1E23              .byte 30,35
 005E                   .dbsym e close_min_tab _close_min_tab A[10:10]kc
                        .area data(ram, con, rel)
 0006                   .dbfile d:\MYDOCU~1\ac20-1\ac20-1.c
 0006           _FX::
 0006                   .blkb 1
                        .area idata
 0006 00                .byte 0
                        .area data(ram, con, rel)
 0007                   .dbfile d:\MYDOCU~1\ac20-1\ac20-1.c
 0007                   .dbsym e FX _FX c
 0007           _ddata::
 0007                   .blkb 1
                        .area idata
 0007 00                .byte 0
                        .area data(ram, con, rel)
 0008                   .dbfile d:\MYDOCU~1\ac20-1\ac20-1.c
 0008                   .dbsym e ddata _ddata c
 0008           _wide::
 0008                   .blkb 1
                        .area idata
 0008 00                .byte 0
                        .area data(ram, con, rel)
 0009                   .dbfile d:\MYDOCU~1\ac20-1\ac20-1.c
 0009                   .dbsym e wide _wide c
                        .area text(rom, con, rel)
 0000                   .dbfile d:\MYDOCU~1\ac20-1\ac20-1.c
 0000                   .dbfunc e delay _delay fV
 0000           ;              i -> R20,R21
 0000           ;              j -> R22,R23
 0000           ;              k -> R16,R17
                        .even
 0000           _delay::
 0000 0E940000          xcall push_gset2
 0004                   .dbline -1
 0004                   .dbline 113
 0004           ; #include<iom16v.h>            //文件包含
 0004           ; #include<eeprom.h>
 0004           ; #define uchar unsigned char  //变量类型的宏定义
 0004           ; #define uint unsigned int
 0004           ; 
 0004           ; uchar const seg[10]={0x3f,0x06,0x5b,0x4f,0x66,  //数码管段码设定
 0004           ;                 0x6d,0x7d,0x07,0x7f,0x6f};
 0004           ; uchar const act[4]={0xdf,0xbf,0x7f,0xef};        //数码管位码设定
 0004           ; 
 0004           ; /***********************输入量设定*************************/
 0004           ; uchar stoptime=3;             //靠墙停顿时间设定
 0004           ; uchar study_speed;            //学习时的速度设定
 0004           ; uchar study_speed_temp=4;
 0004           ; 
 0004           ; uchar open_max,open_min;  //开门最大速度、最小速度设定
 0004           ; uchar open_max_temp=4,open_min_temp=4;
 0004           ; 
 0004           ; uchar close_max,close_min;  //关门最大速度、最小速度设定
 0004           ; uchar close_max_temp=1,close_min_temp=4;
 0004           ; 
 0004           ; /*****************输入量的列表****************/
 0004           ; uint const stoptime_tab[10]={500,1000,2000,3000,4000,5000,
 0004           ;                                               6000,7000,8000,9000};
 0004           ; uchar const round_cnt_tab[10]={5,6,7,8,9,10,15,20,25,30};     
 0004           ; uchar const study_speed_tab[10]={5,7,9,11,13,15,
 0004           ;                                                               20,25,30,35};   
 0004           ; uchar const open_max_tab[10]={100,120,140,150,155,
 0004           ;                                               160,165,170,175,180};
 0004           ; uchar const open_min_tab[10]={5,7,8,9,10,
 0004           ;                                               15,20,25,30,35};
 0004           ; uchar const close_max_tab[10]={100,120,140,150,155,
 0004           ;                                               160,165,170,175,180};
 0004           ; uchar const close_min_tab[10]={5,7,8,9,10,
 0004           ;                                               15,20,25,30,35};
 0004           ;                                               
 0004           ; uint round_cnt;  //直流电机旋转的圈数
 0004           ; int changdu;       //实际门扇移动的长度
 0004           ; uint st_changdu;      //设定门扇移动的长度
 0004           ; uint allchangdu_x;  //总长度(中间变量)
 0004           ; uint allchangdu;      //总长度
 0004           ; uint sp_pl;           //脉冲计数变量
 0004           ; uchar set_status;     //设定状态
 0004           ; uchar status;         //工作状态
 0004           ; 
 0004           ; /***********临时变量***********/
 0004           ; uint cnt_500;         
 0004           ; uchar fst,val;
 0004           ; uchar temp;
 0004           ; uchar x;uchar FX=0;
 0004           ; uchar eep_temp;
 0004           ; 
 0004           ; uchar open_inc_tab[16];               //开门加速函数的计算表
 0004           ; uchar open_dec_tab[16];               //开门减速函数的计算表
 0004           ; uchar close_inc_tab[16];              //关门加速函数的计算表
 0004           ; uchar close_dec_tab[16];      //关门减速函数的计算表
 0004           ; 
 0004           ; uchar openflag;
 0004           ; uchar dis_bit,ddata=0;
 0004           ; /***********************************************/
 0004           ; uchar inc_dec_flag;           //加减速的标志
 0004           ; uchar wide=0;                 //加减速的脉冲宽度变量
 0004           ; 
 0004           ; /****************常量定义***************/
 0004           ; #define L 1;
 0004           ; #define R 0;
 0004           ; #define ON 0;
 0004           ; #define OFF 1;
 0004           ; #define ALL 1
 0004           ; #define HALF 0
 0004           ; 
 0004           ; /**************端口高低电平定义****************/
 0004           ; #define PWMOUT_0  (PORTD=PORTD|0x80)          //PWM端输出0
 0004           ; #define PWMOUT_1  (PORTD=PORTD&0x7f)          //PWM端输出1
 0004           ; #define SACE_0  (PORTD=PORTD|0x40)                    //SACE端输出0
 0004           ; #define SACE_1  (PORTD=PORTD&0xbf)            //SACE端输出1
 0004           ; #define FANXIANG_L  (PORTD=PORTD|0x20)        //方向向左
 0004           ; #define FANXIANG_R  (PORTD=PORTD&0xdf)        //方向向右
 0004           ; #define RELAY_ON  (PORTD=PORTD&0xf7)          //继电器吸合
 0004           ; #define RELAY_OFF  (PORTD=PORTD|0x08)         //继电器断开
 0004           ; #define LOCK_ON  (PORTD=PORTD&0xef)           //锁停门扇打开
 0004           ; #define LOCK_OFF  (PORTD=PORTD|0x10)          //锁停门扇关闭
 0004           ; 
 0004           ; #define CON_SMAIL  (PORTC&0x01)                       //门扇打开微小的距离运行
 0004           ; #define TANTE1 (PINC&0x40)                                    //门外侧的红外感应探测器1
 0004           ; #define TANTE2 (PINC&0x02)                                    //门内侧的红外感应探测器2
 0004           ; #define KEY_SET (PINB&0x01)                                   //按键输入SET
 0004           ; #define KEY_ADD (PINB&0x02)                                   //按键输入ADD
 0004           ; #define KEY_OK (PINB&0x04)                                    //按键输入OK
 0004           ; #define OFF_ALLTANTE (PINB&0x08)                      //关闭全部的红外感应探测器
 0004           ; #define OFF_TANTE1 (PINB&0x10)                                //关闭门外侧的红外感应探测器1
 0004           ; #define HALF_RUN (PIND&0x01)                          //门扇半开运行
 0004           ; #define ALLOPEN_STOP (PIND&0x02)                      //门扇全开后锁停
 0004           ; #define STOP (PINC&0x10)                                              //门扇锁停
 0004           ; 
 0004           ; /****************EEPROM内部地址定义*********************/
 0004           ; #define stoptime_address 10
 0004           ; #define study_speed_address 15
 0004           ; #define open_max_address 20
 0004           ; #define open_min_address 25 
 0004           ; #define close_max_address 30
 0004           ; #define close_min_address 35
 0004           ; 
 0004           ; /***********************************************************/
 0004           ; uchar openstop;                       //门全开后停止不动的标志
 0004           ; uchar tante_flag;                     //门外侧的红外感应探测器1允许使用的标志
 0004           ; 
 0004           ; /******************函数声明***********************/
 0004           ; void start(void);                     
 0004           ; //void fai_zhan(void);
 0004           ; 
 0004           ; /****************延时子函数*******************/
 0004           ; void delay(uint k)
 0004           ; {
 0004                   .dbline 115
 0004 4427              clr R20
 0006 5527              clr R21
 0008 0BC0              xjmp L5
 000A           L2:
 000A                   .dbline 115
 000A           ; uint i,j;
 000A           ; for(i=0;i<k;i++){
 000A                   .dbline 116
 000A           ; for(j=0;j<1500;j++)
 000A 6627              clr R22
 000C 7727              clr R23
 000E 02C0              xjmp L9
 0010           L6:
 0010                   .dbline 117
 0010                   .dbline 117
 0010                   .dbline 117
 0010           L7:
 0010                   .dbline 116
 0010 6F5F              subi R22,255  ; offset = 1
 0012 7F4F              sbci R23,255
 0014           L9:
 0014                   .dbline 116
 0014 6C3D              cpi R22,220
 0016 E5E0              ldi R30,5
 0018 7E07              cpc R23,R30
 001A D0F3              brlo L6
 001C                   .dbline 117
 001C           L3:
 001C                   .dbline 115
 001C 4F5F              subi R20,255  ; offset = 1
 001E 5F4F              sbci R21,255
 0020           L5:
 0020                   .dbline 115
 0020 4017              cp R20,R16
 0022 5107              cpc R21,R17
 0024 90F3              brlo L2
 0026                   .dbline -2
 0026           L1:
 0026 0E940000          xcall pop_gset2
 002A                   .dbline 0 ; func end
 002A 0895              ret
 002C                   .dbsym r i 20 i
 002C                   .dbsym r j 22 i
 002C                   .dbsym r k 16 i
 002C                   .dbend
 002C                   .dbfunc e init_IO _init_IO fV
                        .even
 002C           _init_IO::
 002C 2297              sbiw R28,2
 002E                   .dbline -1
 002E                   .dbline 122
 002E           ; {;}}
 002E           ; }
 002E           ; 
 002E           ; /*==========初始化单片机I/O口子函数==========*/
 002E           ; void init_IO(void)             
 002E           ; {DDRA=0x7f;                    
 002E                   .dbline 122
 002E 8FE7              ldi R24,127
 0030 8ABB              out 0x1a,R24
 0032                   .dbline 123
 0032           ;  PORTA=0x00;
 0032 2224              clr R2
 0034 2BBA              out 0x1b,R2
 0036                   .dbline 124
 0036           ;  DDRB=0xe0;                                      
 0036 80EE              ldi R24,224
 0038 87BB              out 0x17,R24
 003A                   .dbline 125

⌨️ 快捷键说明

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