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

📄 work.lis

📁 AVRkaifashili.rar
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module work.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\张军\AVR\AVR单片机系统开发实例稿\第七章\第七章工程\work.c
 0000                   .dbfunc e IO_Init _IO_Init fV
                        .even
 0000           _IO_Init::
 0000                   .dbline -1
 0000                   .dbline 54
 0000           ; //**********************FileName:Work.c**************************//
 0000           ; //**********************ICCAVR6.30编译****************************//
 0000           ; #include <io8535v.h>
 0000           ; #include <macros.h>
 0000           ; #define uchar unsigned char
 0000           ; #define uint  unsigned int
 0000           ; 
 0000           ; //引脚信号定义
 0000           ; #define  KEY_0 (PINA&0x01)     //PA0装票键 
 0000           ; #define  KEY_1 (PINA&0x02)     //PA1打印页码键
 0000           ; #define  KEY_2 (PINA&0x04)     //PA2盖章键 
 0000           ; 
 0000           ; #define  SONSOR_0 (PINB&0x01)  //PB0前传感器
 0000           ; #define  SONSOR_1 (PINB&0x02)  //PB1中传感器
 0000           ; #define  SONSOR_2 (PINB&0x04)  //PB2后传感器
 0000           ; #define  SONSOR_3 (PINB&0x08)  //PB3纸传感器
 0000           ; #define  SONSOR_4 (PINB&0x10)  //PB4字轮传感器
 0000           ; #define  SONSOR_5 (PINB&0x20)  //PB5行走左传感器
 0000           ; #define  SONSOR_6 (PINB&0x40)  //PB6行走右传感器
 0000           ; 
 0000           ; #define  SIGN_ON1   (PORTD=PORTD|0x01) //PD0=1盖章工作指示灯输出
 0000           ; #define  SIGN_ON0   (PORTD=PORTD&0xfe) //PD0=0盖章工作指示灯输出
 0000           ; #define  SIGN_OFF1  (PORTD=PORTD|0x02) //PD1=1盖章结束指示灯输出管脚
 0000           ; #define  SIGN_OFF0  (PORTD=PORTD&0xfd) //PD1=0盖章结束指示灯输出管脚
 0000           ; #define  PRINT_ON1  (PORTD=PORTD|0x08) //PD3=1打印页码工作指示灯输出管脚
 0000           ; #define  PRINT_ON0  (PORTD=PORTD&0xf7) //PD3=0打印页码工作指示灯输出管脚
 0000           ; #define  PRINT_OFF1 (PORTD=PORTD|0x10) //PD4=1打印页码结束指示灯输出管脚
 0000           ; #define  PRINT_OFF0 (PORTD=PORTD&0xef) //PD4=1打印页码结束指示灯输出管脚
 0000           ; 
 0000           ; #define  GRASP_ACT1 (PORTC=PORTC|0x01) //PC0抓纸机械手输出管脚
 0000           ; #define  GRASP_ACT0 (PORTC=PORTC&0xfe) //PC0抓纸机械手输出管脚
 0000           ; #define  PRINT_ACT1 (PORTC=PORTC|0x02) //PC1字轮击打电磁铁输出管脚
 0000           ; #define  PRINT_ACT0 (PORTC=PORTC&0xfd) //PC1字轮击打电磁铁输出管脚
 0000           ; #define  SIGN_ACT1  (PORTC=PORTC|0x04) //PC2盖章击打电磁铁输出管脚
 0000           ; #define  SIGN_ACT0  (PORTC=PORTC&0xfb) //PC2盖章击打电磁铁输出管脚
 0000           ; #define  M_DIR1     (PORTC=PORTC|0x08) //PC3电机方向输出管脚
 0000           ; #define  M_DIR0     (PORTC=PORTC&0xf7) //PC3电机方向输出管脚
 0000           ; #define  M3_pulse1  (PORTC=PORTC|0x10) //PC4字轮电机脉冲输出管脚
 0000           ; #define  M3_pulse0  (PORTC=PORTC&0xef) //PC4字轮电机脉冲输出管脚
 0000           ; #define  M2_pulse1  (PORTC=PORTC|0x20) //PC5行走电机脉冲输出管脚
 0000           ; #define  M2_pulse0  (PORTC=PORTC&0xdf) //PC5行走电机脉冲输出管脚
 0000           ; #define  M1_pulse1  (PORTC=PORTC|0x40) //PC6装票电机脉冲输出管脚
 0000           ; #define  M1_pulse0  (PORTC=PORTC&0xbf) //PC6装票电机脉冲输出管脚
 0000           ; 
 0000           ; uchar KeyDown;  //有功能键按下标志
 0000           ; uchar Cancell;  //取消功能键标志
 0000           ; uint  u;        //翻页步进电机的步数变量
 0000           ; uint  b;        //页码序号的不同位数之间差值的中间变量    
 0000           ; uchar FunkeyNum;//功能按键的标号变量
 0000           ; uchar R_Step;   //页码序号之间的距离(数字间距)所需的步进电机的步数
 0000           ; 
 0000           ; //*****************I/O口初始化*****************************
 0000           ; void IO_Init(void)
 0000           ; {DDRA=0x00;//A口三态输入
 0000                   .dbline 54
 0000 2224              clr R2
 0002 2ABA              out 0x1a,R2
 0004                   .dbline 55
 0004           ;  PORTA=0x00;
 0004 2BBA              out 0x1b,R2
 0006                   .dbline 56
 0006           ;  DDRB=0x00;//B口三态输入
 0006 27BA              out 0x17,R2
 0008                   .dbline 57
 0008           ;  PORTB=0x00;
 0008 28BA              out 0x18,R2
 000A                   .dbline 58
 000A           ;  DDRC=0xff;//C口推挽输出
 000A 8FEF              ldi R24,255
 000C 84BB              out 0x14,R24
 000E                   .dbline 59
 000E           ;  PORTC=0xff;
 000E 85BB              out 0x15,R24
 0010                   .dbline 60
 0010           ;  DDRD=0xfb;//D口推挽输出,PD2中断输入
 0010 8BEF              ldi R24,251
 0012 81BB              out 0x11,R24
 0014                   .dbline 61
 0014           ;  PORTD=0xfb;
 0014 82BB              out 0x12,R24
 0016                   .dbline -2
 0016                   .dbline 62
 0016           ; }
 0016           L1:
 0016                   .dbline 0 ; func end
 0016 0895              ret
 0018                   .dbend
 0018                   .dbfunc e INT_Init _INT_Init fV
                        .even
 0018           _INT_Init::
 0018                   .dbline -1
 0018                   .dbline 65
 0018           ; //*************************中断初始化函数************************//
 0018           ; void INT_Init(void)
 0018           ; {MCUCR=MCUCR&0xfd;//低电平中断
 0018                   .dbline 65
 0018 85B7              in R24,0x35
 001A 8D7F              andi R24,253
 001C 85BF              out 0x35,R24
 001E                   .dbline 66
 001E           ;  GIMSK=GIMSK|0x40;//INT0中断使能
 001E 8BB7              in R24,0x3b
 0020 8064              ori R24,64
 0022 8BBF              out 0x3b,R24
 0024                   .dbline 67
 0024           ;  SREG=SREG|0x80;//全局中断使能
 0024 7894              bset 7
 0026                   .dbline -2
 0026                   .dbline 68
 0026           ; }
 0026           L2:
 0026                   .dbline 0 ; func end
 0026 0895              ret
 0028                   .dbend
 0028                   .dbfunc e DelayShort _DelayShort fV
 0028           ;              i -> R20,R21
 0028           ;              j -> R16,R17
                        .even
 0028           _DelayShort::
 0028 00D0              rcall push_gset1
 002A                   .dbline -1
 002A                   .dbline 72
 002A           ; 
 002A           ; //***************************短延时函数************************//
 002A           ; void DelayShort(uint j)                        
 002A           ; {uint i;
 002A                   .dbline 73
 002A 4427              clr R20
 002C 5527              clr R21
 002E 02C0              rjmp L7
 0030           L4:
 0030                   .dbline 73
 0030           L5:
 0030                   .dbline 73
 0030 4F5F              subi R20,255  ; offset = 1
 0032 5F4F              sbci R21,255
 0034           L7:
 0034                   .dbline 73
 0034           ;  for(i=0;i<j;i++) ;  
 0034 4017              cp R20,R16
 0036 5107              cpc R21,R17
 0038 D8F3              brlo L4
 003A                   .dbline -2
 003A                   .dbline 74
 003A           ; }
 003A           L3:
 003A 00D0              rcall pop_gset1
 003C                   .dbline 0 ; func end
 003C 0895              ret
 003E                   .dbsym r i 20 i
 003E                   .dbsym r j 16 i
 003E                   .dbend
 003E                   .dbfunc e DelayLong _DelayLong fV
 003E           ;              l -> R22,R23
 003E           ;              i -> R20,R21
 003E           ;              j -> R16,R17
                        .even
 003E           _DelayLong::
 003E 00D0              rcall push_gset2
 0040                   .dbline -1
 0040                   .dbline 78
 0040           ; 
 0040           ; //***************************长延时函数************************//
 0040           ; void DelayLong(uint j)                
 0040           ; {uint i;
 0040                   .dbline 79
 0040           ;  for(i=0;i<j;i++)
 0040 4427              clr R20
 0042 5527              clr R21
 0044 0BC0              rjmp L12
 0046           L9:
 0046                   .dbline 80
 0046           ;    {uint l;
 0046                   .dbline 81
 0046 6627              clr R22
 0048 7727              clr R23
 004A 02C0              rjmp L16
 004C           L13:
 004C                   .dbline 81
 004C           L14:
 004C                   .dbline 81
 004C 6F5F              subi R22,255  ; offset = 1
 004E 7F4F              sbci R23,255
 0050           L16:
 0050                   .dbline 81
 0050 683E              cpi R22,232
 0052 E3E0              ldi R30,3
 0054 7E07              cpc R23,R30
 0056 D0F3              brlo L13
 0058                   .dbline 81
 0058           L10:
 0058                   .dbline 79
 0058 4F5F              subi R20,255  ; offset = 1
 005A 5F4F              sbci R21,255
 005C           L12:
 005C                   .dbline 79
 005C 4017              cp R20,R16
 005E 5107              cpc R21,R17
 0060 90F3              brlo L9
 0062                   .dbline -2
 0062                   .dbline 82
 0062           ;     for(l=0;l<1000;l++);}    
 0062           ; }
 0062           L8:
 0062 00D0              rcall pop_gset2
 0064                   .dbline 0 ; func end
 0064 0895              ret
 0066                   .dbsym r l 22 i
 0066                   .dbsym r i 20 i
 0066                   .dbsym r j 16 i
 0066                   .dbend
 0066                   .dbfunc e FunkeyScan _FunkeyScan fV
                        .even
 0066           _FunkeyScan::
 0066                   .dbline -1
 0066                   .dbline 85
 0066           ; //*************************按键扫描函数************************//
 0066           ; void FunkeyScan()
 0066           ; {KeyDown=0;
 0066                   .dbline 85
 0066 2224              clr R2
 0068 20920700          sts _KeyDown,R2
 006C                   .dbline 86
 006C           ;  FunkeyNum=3;
 006C 83E0              ldi R24,3
 006E 80930100          sts _FunkeyNum,R24
 0072                   .dbline 87
 0072           ;  if(KEY_0==0)
 0072 C899              sbic 0x19,0
 0074 0BC0              rjmp L18
 0076                   .dbline 88
 0076           ;   {DelayLong(10);       //去抖动延时10ms
 0076                   .dbline 88
 0076 0AE0              ldi R16,10
 0078 10E0              ldi R17,0
 007A E1DF              rcall _DelayLong
 007C                   .dbline 89
 007C           ;    if(KEY_0==0)
 007C C899              sbic 0x19,0
 007E 06C0              rjmp L20
 0080                   .dbline 90
 0080           ;     {FunkeyNum=0;       //按键的标号变量值赋0
 0080                   .dbline 90
 0080 2224              clr R2
 0082 20920100          sts _FunkeyNum,R2
 0086                   .dbline 91
 0086 81E0              ldi R24,1
 0088 80930700          sts _KeyDown,R24
 008C                   .dbline 91
 008C           L20:
 008C                   .dbline 91
 008C           ;      KeyDown=1;}}       //PA0  装票功能键按下
 008C           L18:
 008C                   .dbline 92
 008C           ;  if(KEY_1==0)
 008C C999              sbic 0x19,1
 008E 0AC0              rjmp L22
 0090                   .dbline 93
 0090           ;   {DelayLong(10);       //去抖动延时10ms
 0090                   .dbline 93
 0090 0AE0              ldi R16,10
 0092 10E0              ldi R17,0
 0094 D4DF              rcall _DelayLong
 0096                   .dbline 94
 0096           ;    if(KEY_1==0)
 0096 C999              sbic 0x19,1
 0098 05C0              rjmp L24
 009A                   .dbline 95
 009A           ;     {FunkeyNum=1;       //按键的标号变量值赋1
 009A                   .dbline 95
 009A 81E0              ldi R24,1
 009C 80930100          sts _FunkeyNum,R24
 00A0                   .dbline 96
 00A0 80930700          sts _KeyDown,R24
 00A4                   .dbline 96
 00A4           L24:
 00A4                   .dbline 96
 00A4           ;      KeyDown=1;}}       //PA1  盖章功能键按下
 00A4           L22:
 00A4                   .dbline 97
 00A4           ;  if(KEY_2==0)
 00A4 CA99              sbic 0x19,2
 00A6 0BC0              rjmp L26
 00A8                   .dbline 98
 00A8           ;   {DelayLong(10);       //去抖动延时10ms
 00A8                   .dbline 98
 00A8 0AE0              ldi R16,10
 00AA 10E0              ldi R17,0
 00AC C8DF              rcall _DelayLong
 00AE                   .dbline 99
 00AE           ;    if(KEY_2==0)
 00AE CA99              sbic 0x19,2
 00B0 06C0              rjmp L28
 00B2                   .dbline 100
 00B2           ;     {FunkeyNum=2;       //按键的标号变量值赋2
 00B2                   .dbline 100
 00B2 82E0              ldi R24,2
 00B4 80930100          sts _FunkeyNum,R24
 00B8                   .dbline 101
 00B8 81E0              ldi R24,1
 00BA 80930700          sts _KeyDown,R24
 00BE                   .dbline 101
 00BE           L28:
 00BE                   .dbline 101
 00BE           L26:
 00BE                   .dbline -2
 00BE                   .dbline 102
 00BE           ;      KeyDown=1;}}       //PA2 打码功能键按下
 00BE           ; }
 00BE           L17:
 00BE                   .dbline 0 ; func end
 00BE 0895              ret
 00C0                   .dbend
 00C0                   .dbfunc e PulseZhuangPiao _PulseZhuangPiao fV

⌨️ 快捷键说明

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