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

📄 main.lis

📁 我写的L297步进电机的驱动
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\单片机\PROJECT\高精度三维太阳自动跟踪器\程序\传感器控制/lcm12864.h
 0000                   .dbfunc e delayus _delayus fV
 0000           ;             us -> R16
                        .even
 0000           _delayus::
 0000                   .dbline -1
 0000                   .dbline 33
 0000           ; /*****************************************
 0000           ; *      基于AD转化程序设计                          *
 0000           ; * 功    能:AD转化                             *
 0000           ; * 时钟频率:内部8M                                             *
 0000           ; * 设    计:莫锦攀                                             *
 0000           ; * 修改日期:2007年07月04日                             *
 0000           ; * 编译环境:ICC-AVR6.31                                        *
 0000           ; * 实验环境:M16学习板                                  *
 0000           ; * 使用端口:PC6,PC7,PA4~PA7,PA0                *
 0000           ; *****************************************/
 0000           ; 
 0000           ; #include <iom128v.h>
 0000           ; #include <macros.h>
 0000           ; #include "lcm12864.h"
 0000           ; #include "delay.h"
 0000           ; #define uchar unsigned char
 0000           ; #define uint unsigned int
 0000           ; uchar Data[5]={0,0,0,0,0};//初始值为0000,最后一个0是结束符
 0000           ; void change(uint i,uchar *p)           //显示处理
 0000           ; {p[3]=i%10+48;//个
 0000           ;  p[2]=i/10%10+48;//十
 0000           ;  p[1]=i/100%10+48;//百
 0000           ;  p[0]=i/1000%10+48;//千
 0000           ; }
 0000           ; 
 0000           ; uint ADC_convert(void)//AD转换函数,读取采样获得的10位数据
 0000           ; {
 0000           ; uint temp1,temp2;
 0000           ; temp1=(uint)ADCL;
 0000           ; temp2=(uint)ADCH;
 0000           ; temp2=(temp2<<8)+temp1;
 0000           ; return temp2;
 0000           ; }
 0000                   .dbline 34
 0000           ; void ADC_init(void)
 0000 02C0              xjmp L5
 0002           L2:
 0002                   .dbline 35
 0002                   .dbline 35
 0002 A895              wdr
 0004                   .dbline 35
 0004           L3:
 0004                   .dbline 34
 0004 0A95              dec R16
 0006           L5:
 0006                   .dbline 34
 0006 0023              tst R16
 0008 E1F7              brne L2
 000A                   .dbline -2
 000A           L1:
 000A                   .dbline 0 ; func end
 000A 0895              ret
 000C                   .dbsym r us 16 c
 000C                   .dbend
 000C                   .dbfunc e delayms _delayms fV
 000C           ;              i -> R20,R21
 000C           ;             ms -> R16,R17
                        .even
 000C           _delayms::
 000C 0E940000          xcall push_gset1
 0010                   .dbline -1
 0010                   .dbline 39
 0010           ; {     ADMUX=0x01;             //选择通道PA0;外部REF+5V
 0010           ;       ADCSRA|=((1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0));
 0010           ;                               //使能AD;启动AD;自由转换模式;8分频
 0010           ;       // ADCSRA=0xc2;                 
 0010           ; }
 0010                   .dbline 42
 0010           ; 
 0010           ; void main(void)
 0010           ; {uint i,j;
 0010 0CC0              xjmp L10
 0012           L7:
 0012                   .dbline 43
 0012           ; //uchar a;
 0012                   .dbline 43
 0012 4DEC              ldi R20,461
 0014 51E0              ldi R21,1
 0016 04C0              xjmp L14
 0018           L11:
 0018                   .dbline 44
 0018                   .dbline 44
 0018 A895              wdr
 001A                   .dbline 44
 001A A895              wdr
 001C                   .dbline 44
 001C           L12:
 001C                   .dbline 43
 001C 4150              subi R20,1
 001E 5040              sbci R21,0
 0020           L14:
 0020                   .dbline 43
 0020 4030              cpi R20,0
 0022 4507              cpc R20,R21
 0024 C9F7              brne L11
 0026           X0:
 0026                   .dbline 45
 0026           L8:
 0026                   .dbline 42
 0026 0150              subi R16,1
 0028 1040              sbci R17,0
 002A           L10:
 002A                   .dbline 42
 002A 0030              cpi R16,0
 002C 0107              cpc R16,R17
 002E 89F7              brne L7
 0030           X1:
 0030                   .dbline -2
 0030           L6:
 0030 0E940000          xcall pop_gset1
 0034                   .dbline 0 ; func end
 0034 0895              ret
 0036                   .dbsym r i 20 i
 0036                   .dbsym r ms 16 i
 0036                   .dbend
 0036                   .dbfunc e data_trans _data_trans fV
 0036           ;              i -> R20
 0036           ;           data -> R16
                        .even
 0036           _data_trans::
 0036 0E940000          xcall push_gset1
 003A                   .dbline -1
 003A                   .dbline 51
 003A           ; PORTA = 0x00;
 003A           ; DDRA  = 0xFF;
 003A           ; PORTB = 0x01;
 003A           ; DDRB  = 0xFF;
 003A           ; PORTC = 0x00; //m103 output only
 003A           ; DDRC  = 0x00;
 003A           ; PORTD = 0x00;
 003A           ; DDRD  = 0x0f;
 003A                   .dbline 54
 003A           ; PORTE = 0x00;
 003A           ;  DDRE  = 0xF0; 
 003A           ;  PORTF = 0x00;
 003A 48E0              ldi R20,8
 003C 09C0              xjmp L19
 003E           L16:
 003E                   .dbline 55
 003E           ;  DDRF  = 0x00;
 003E                   .dbline 55
 003E 07FF              sbrs R16,7
 0040 02C0              rjmp L20
 0042                   .dbline 55
 0042 C69A              sbi 0x18,6
 0044 01C0              xjmp L21
 0046           L20:
 0046                   .dbline 56
 0046           ;  PORTG = 0x00;
 0046 C698              cbi 0x18,6
 0048           L21:
 0048                   .dbline 57
 0048 C498              cbi 0x18,4
 004A                   .dbline 58
 004A 000F              lsl R16
 004C                   .dbline 59
 004C C49A              sbi 0x18,4
 004E                   .dbline 60
 004E           L17:
 004E                   .dbline 54
 004E 4A95              dec R20
 0050           L19:
 0050                   .dbline 54
 0050 4423              tst R20
 0052 A9F7              brne L16
 0054                   .dbline -2
 0054           L15:
 0054 0E940000          xcall pop_gset1
 0058                   .dbline 0 ; func end
 0058 0895              ret
 005A                   .dbsym r i 20 c
 005A                   .dbsym r data 16 c
 005A                   .dbend
 005A                   .dbfunc e Send_CMD _Send_CMD fV
 005A           ;           temp -> R20
 005A           ;            com -> R22
                        .even
 005A           _Send_CMD::
 005A 0E940000          xcall push_gset2
 005E 602F              mov R22,R16
 0060                   .dbline -1
 0060                   .dbline 64
 0060           ;  DDRG  = 0x00;
 0060           ;   
 0060           ; LCM_init();//液晶初始化
 0060           ; //DisHZ(0x89,11,"正在启动...");
 0060           ;  /*// ADMUX=(1<<REFS0)|(1<<REFS1);//选择第一通道ADC0,内部REF(2.56V)
 0060           ;   ADMUX=0x01;
 0060           ;   ADCSRA=0xe5;//8M32分频,125k速率,自由模式;启动AD转换器*/
 0060           ; 
 0060                   .dbline 67
 0060           ; 
 0060           ;  ADC_init();
 0060           ;  
 0060 C59A              sbi 0x18,5
 0062                   .dbline 68
 0062           ;   delay_nms(10);//延迟100ms等待系统稳定后读取数据
 0062 48EF              ldi R20,248
 0064                   .dbline 69
 0064           ; 
 0064 042F              mov R16,R20
 0066 E7DF              xcall _data_trans
 0068                   .dbline 70
 0068           ;  
 0068 462F              mov R20,R22
 006A 407F              andi R20,240
 006C                   .dbline 71
 006C           ;    while(1)
 006C 042F              mov R16,R20
 006E E3DF              xcall _data_trans
 0070                   .dbline 72
 0070           ;    {
 0070 462F              mov R20,R22
 0072 4F70              andi R20,15
 0074                   .dbline 72
 0074 842F              mov R24,R20
 0076 8F70              andi R24,#0x0F
 0078 8295              swap R24
 007A 482F              mov R20,R24
 007C                   .dbline 73
 007C           ; 
 007C 082F              mov R16,R24
 007E DBDF              xcall _data_trans
 0080                   .dbline 74
 0080           ;    i=ADC_convert();
 0080 C598              cbi 0x18,5
 0082                   .dbline 75
 0082           ;    j=0;
 0082 06E4              ldi R16,70
 0084 BDDF              xcall _delayus
 0086                   .dbline -2
 0086           L22:
 0086 0E940000          xcall pop_gset2
 008A                   .dbline 0 ; func end
 008A 0895              ret
 008C                   .dbsym r temp 20 c
 008C                   .dbsym r com 22 c
 008C                   .dbend
 008C                   .dbfunc e LCD_Set_DDRAM _LCD_Set_DDRAM fV
 008C           ;           addr -> R20
                        .even
 008C           _LCD_Set_DDRAM::
 008C 0E940000          xcall push_gset1
 0090 402F              mov R20,R16
 0092                   .dbline -1
 0092                   .dbline 79
 0092           ;    change(i,Data);
 0092           ;    DisHZXY(0,0,10,"AD测试程序");
 0092           ;    DisHZXY(3,1,4,Data);
 0092           ;    if(i>650)
 0092                   .dbline 79
 0092 042F              mov R16,R20
 0094 E2DF              xcall _Send_CMD
 0096                   .dbline -2
 0096           L23:
 0096 0E940000          xcall pop_gset1
 009A                   .dbline 0 ; func end
 009A 0895              ret
 009C                   .dbsym r addr 20 c
 009C                   .dbend
 009C                   .dbfunc e LCD_HOME _LCD_HOME fV
                        .even
 009C           _LCD_HOME::
 009C                   .dbline -1
 009C                   .dbline 82
 009C           ;   { DisHZXY(2,3,4,"正转");
 009C           ;    PORTA|=(1<<2);
 009C           ;    PORTC|=(1<<6);
 009C                   .dbline 82
 009C 02E0              ldi R16,2
 009E DDDF              xcall _Send_CMD
 00A0                   .dbline -2
 00A0           L24:
 00A0                   .dbline 0 ; func end
 00A0 0895              ret
 00A2                   .dbend
 00A2                   .dbfunc e LCD_CLR _LCD_CLR fV
                        .even
 00A2           _LCD_CLR::
 00A2                   .dbline -1
 00A2                   .dbline 85
 00A2           ;    while(j<=2000)
 00A2           ;    {
 00A2           ;    PORTA|=(1<<3);
 00A2                   .dbline 85
 00A2 01E0              ldi R16,1
 00A4 DADF              xcall _Send_CMD
 00A6                   .dbline 85
 00A6 02E0              ldi R16,2
 00A8 10E0              ldi R17,0
 00AA B0DF              xcall _delayms
 00AC                   .dbline -2
 00AC           L25:
 00AC                   .dbline 0 ; func end
 00AC 0895              ret
 00AE                   .dbend
 00AE                   .dbfunc e Send_DATA _Send_DATA fV
 00AE           ;           temp -> R20
 00AE           ;           data -> R22
                        .even
 00AE           _Send_DATA::
 00AE 0E940000          xcall push_gset2
 00B2 602F              mov R22,R16
 00B4                   .dbline -1
 00B4                   .dbline 88
 00B4           ;    delay_nus(17);   
 00B4           ;    PORTA&=~(1<<3);
 00B4           ;    delay_nus(17);
 00B4                   .dbline 90
 00B4           ;    j++;
 00B4           ;    }
 00B4 C59A              sbi 0x18,5

⌨️ 快捷键说明

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