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

📄 project.lis

📁 AVRkaifashili.rar
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .even
 0000           _delay::
 0000                   .dbline -1
 0000                   .dbline 47
 0000           L2:
 0000                   .dbline 47
 0000           L3:
 0000                   .dbline 47
 0000           ; //***************************FileName:Project.c**********************//
 0000           ; //***************************ICCAVR6.30编译**************************//
 0000           ; #include <io8535v.h>       //AT90S8535寄存器定义;
 0000           ; #include <macros.h>            //AT90S8535宏定义;
 0000           ; #include "zimo.h"            //点阵LED字模
 0000           ; #define uchar unsigned char  //数据类型定义
 0000           ; #define uint unsigned int    //数据类型定义
 0000           ; 
 0000           ; uchar Key_Value;                   //按键键值;
 0000           ; uchar State_Flag;                  //站点标志;
 0000           ; uchar Ack_Flag;                        //确认标志;
 0000           ; uchar Pre_Flag;                        //预报标志;
 0000           ; uchar Move_Flag;                   //滚动标志;
 0000           ; uchar Spec_Flag;                   //特殊信息标志;
 0000           ; uchar EOM_Flag=1;              //信息结束标志;
 0000           ; uchar Pst_Flag;                        //上、下行标志;
 0000           ; uchar State=1;                             //站数;
 0000           ; uchar Spec;                            //特殊信息数;
 0000           ; uchar Speed=20;                        //文字滚动速度;
 0000           ; uchar Word_Number;             //显示字数;
 0000           ; 
 0000           ; //语音芯片第1~16段分别保存16站的站名信息
 0000           ; //第17段保存报站信息“到了,请要下车的乘客依次从后门下车”
 0000           ; //第18、19段分别保存预报信息“前方到站”、“请要下车的乘客做好下车准备”
 0000           ; //第20段保存欢迎信息及公交车线路说明
 0000           ; //第21、22段保存特殊提示信息
 0000           ; uchar Snd_Info[]={0,17};                         //报站声音信息
 0000           ; uchar Snd_Pre_Info[]={18,0,19};                  //预报声音信息
 0000           ; uchar Snd_Spec[]={21,22};                        //特殊声音信息
 0000           ; uchar Snd_Welc=20;                                   //欢迎声音信息
 0000           ; 
 0000           ; //本例公交车语音报站系统包含16站
 0000           ; //所有的站名都以“第n站”代替,其中n为当前站数,n<16
 0000           ; //报站时显示屏滚动显示“第n站到了”
 0000           ; //预报站时显示屏显示“前方到站第n站”
 0000           ; //其中“第n站”字模存放在二维数组State n[3][32]中
 0000           ; //“到了”字模存放在二维数组DL[2][32]中
 0000           ; //“前方到站”字模存放在二维数组QFDZ[4][32]中
 0000           ; uchar text[32];                                          //当前显示文字
 0000           ; uchar next[32];                                      //下一个显示文字
 0000           ; 
 0000           ; #pragma interrupt_handler Key_Scan:2   //定义按键中断INT0的中断服务程序
 0000           ; #pragma interrupt_handler Receive_EOM:3//定义语音中断INT1的中断服务程序
 0000           ; 
 0000           ; //****************************延时程序*******************************//
 0000           ; void delay(int t)
 0000           ; {while(t--) ;}
 0000 202E              mov R2,R16
 0002 312E              mov R3,R17
 0004 0150              subi R16,1
 0006 1040              sbci R17,0
 0008 2220              tst R2
 000A D1F7              brne L2
 000C 3320              tst R3
 000E C1F7              brne L2
 0010           X0:
 0010                   .dbline -2
 0010                   .dbline 47
 0010           L1:
 0010                   .dbline 0 ; func end
 0010 0895              ret
 0012                   .dbsym r t 16 I
 0012                   .dbend
 0012                   .dbfunc e Set_CE _Set_CE fV
 0012           ;          level -> R16
                        .even
 0012           _Set_CE::
 0012                   .dbline -1
 0012                   .dbline 51
 0012           ; 
 0012           ; //****************************语音芯片驱动程序***********************//
 0012           ; void Set_CE(uchar level)               //定义ISD2560使能线为PA^4
 0012           ; {if(level==1) PORTA |=0x10;           
 0012                   .dbline 51
 0012 0130              cpi R16,1
 0014 11F4              brne L6
 0016                   .dbline 51
 0016 DC9A              sbi 0x1b,4
 0018 03C0              rjmp L7
 001A           L6:
 001A                   .dbline 52
 001A 8BB3              in R24,0x1b
 001C 8F7E              andi R24,239
 001E 8BBB              out 0x1b,R24
 0020           L7:
 0020                   .dbline -2
 0020                   .dbline 53
 0020           ;  else         PORTA &=0xef;
 0020           ; }
 0020           L5:
 0020                   .dbline 0 ; func end
 0020 0895              ret
 0022                   .dbsym r level 16 c
 0022                   .dbend
 0022                   .dbfunc e Set_PD _Set_PD fV
 0022           ;          level -> R16
                        .even
 0022           _Set_PD::
 0022                   .dbline -1
 0022                   .dbline 56
 0022           ; 
 0022           ; void Set_PD(uchar level)               //定义ISD2560的PD线为PA^3      
 0022           ; {if(level)    PORTA |=0x08;
 0022                   .dbline 56
 0022 0023              tst R16
 0024 11F0              breq L9
 0026                   .dbline 56
 0026 DB9A              sbi 0x1b,3
 0028 03C0              rjmp L10
 002A           L9:
 002A                   .dbline 57
 002A 8BB3              in R24,0x1b
 002C 877F              andi R24,247
 002E 8BBB              out 0x1b,R24
 0030           L10:
 0030                   .dbline -2
 0030                   .dbline 58
 0030           ;  else         PORTA &=0xf7;
 0030           ; }
 0030           L8:
 0030                   .dbline 0 ; func end
 0030 0895              ret
 0032                   .dbsym r level 16 c
 0032                   .dbend
 0032                   .dbfunc e Set_PR _Set_PR fV
 0032           ;          level -> R16
                        .even
 0032           _Set_PR::
 0032                   .dbline -1
 0032                   .dbline 61
 0032           ; 
 0032           ; void Set_PR(uchar level)               //定义ISD2560的PR线为PA^2
 0032           ; {if(level)    PORTA |=0x04;
 0032                   .dbline 61
 0032 0023              tst R16
 0034 11F0              breq L12
 0036                   .dbline 61
 0036 DA9A              sbi 0x1b,2
 0038 03C0              rjmp L13
 003A           L12:
 003A                   .dbline 62
 003A 8BB3              in R24,0x1b
 003C 8B7F              andi R24,251
 003E 8BBB              out 0x1b,R24
 0040           L13:
 0040                   .dbline -2
 0040                   .dbline 63
 0040           ;  else         PORTA &=0xfb;
 0040           ; }
 0040           L11:
 0040                   .dbline 0 ; func end
 0040 0895              ret
 0042                   .dbsym r level 16 c
 0042                   .dbend
 0042                   .dbfunc e Set_A6 _Set_A6 fV
 0042           ;          level -> R16
                        .even
 0042           _Set_A6::
 0042                   .dbline -1
 0042                   .dbline 66
 0042           ; 
 0042           ; void Set_A6(uchar level)               //定义ISD2560的A6/8/9线为PA^1
 0042           ; {if(level)    PORTA |=0x02;
 0042                   .dbline 66
 0042 0023              tst R16
 0044 11F0              breq L15
 0046                   .dbline 66
 0046 D99A              sbi 0x1b,1
 0048 03C0              rjmp L16
 004A           L15:
 004A                   .dbline 67
 004A 8BB3              in R24,0x1b
 004C 8D7F              andi R24,253
 004E 8BBB              out 0x1b,R24
 0050           L16:
 0050                   .dbline -2
 0050                   .dbline 68
 0050           ;  else         PORTA &=0xfd;
 0050           ; }
 0050           L14:
 0050                   .dbline 0 ; func end
 0050 0895              ret
 0052                   .dbsym r level 16 c
 0052                   .dbend
 0052                   .dbfunc e Set_A0 _Set_A0 fV
 0052           ;          level -> R16
                        .even
 0052           _Set_A0::
 0052                   .dbline -1
 0052                   .dbline 71
 0052           ; 
 0052           ; void Set_A0(uchar level)               //定义ISD2560的A6/8/9线为PA^1
 0052           ; {if(level)    PORTA |=0x01;
 0052                   .dbline 71
 0052 0023              tst R16
 0054 11F0              breq L18
 0056                   .dbline 71
 0056 D89A              sbi 0x1b,0
 0058 03C0              rjmp L19
 005A           L18:
 005A                   .dbline 72
 005A 8BB3              in R24,0x1b
 005C 8E7F              andi R24,254
 005E 8BBB              out 0x1b,R24
 0060           L19:
 0060                   .dbline -2
 0060                   .dbline 73
 0060           ;  else         PORTA &=0xfe;
 0060           ; }
 0060           L17:
 0060                   .dbline 0 ; func end
 0060 0895              ret
 0062                   .dbsym r level 16 c
 0062                   .dbend
 0062                   .dbfunc e Seek_Segment _Seek_Segment fV
 0062           ;              s -> R20
                        .even
 0062           _Seek_Segment::
 0062 00D0              rcall push_gset1
 0064 402F              mov R20,R16
 0066                   .dbline -1
 0066                   .dbline 77
 0066           ; 
 0066           ; //****************************语音搜索和播放程序****************************//
 0066           ; void Seek_Segment(uchar s)             //语音搜索程序
 0066           ; {Set_PD(1);                                          //语音芯片复位
 0066                   .dbline 77
 0066 01E0              ldi R16,1
 0068 DCDF              rcall _Set_PD
 006A                   .dbline 78
 006A           ;  delay(20000);
 006A 00E2              ldi R16,20000
 006C 1EE4              ldi R17,78
 006E C8DF              rcall _delay
 0070                   .dbline 79
 0070           ;  Set_PD(0);
 0070 0027              clr R16
 0072 D7DF              rcall _Set_PD
 0074                   .dbline 80
 0074           ;  Set_PR(1);                                          //放音模式
 0074 01E0              ldi R16,1
 0076 DDDF              rcall _Set_PR
 0078                   .dbline 81
 0078           ;  Set_A0(1);                                          //M0模式
 0078 01E0              ldi R16,1
 007A EBDF              rcall _Set_A0
 007C 0CC0              rjmp L22
 007E           L21:
 007E                   .dbline 83
 007E           ;  while(s--)                                          //快进s段
 007E           ;  {Set_CE(0);
 007E                   .dbline 83
 007E 0027              clr R16
 0080 C8DF              rcall _Set_CE
 0082                   .dbline 84
 0082           ;   Set_CE(1);
 0082 01E0              ldi R16,1
 0084 C6DF              rcall _Set_CE
 0086           L24:
 0086                   .dbline 85
 0086           ;   do NOP();
 0086 0000              nop
 0088           L25:
 0088                   .dbline 86
 0088 20900000          lds R2,_EOM_Flag
 008C 2220              tst R2
 008E D9F7              brne L24
 0090                   .dbline 87
 0090 81E0              ldi R24,1
 0092 80930000          sts _EOM_Flag,R24
 0096                   .dbline 87
 0096           L22:
 0096                   .dbline 82
 0096 242E              mov R2,R20
 0098 3324              clr R3
 009A 4150              subi R20,1
 009C 2220              tst R2
 009E 79F7              brne L21
 00A0                   .dbline 88
 00A0           ;   while(EOM_Flag);                           //检测EOM标志位,为0时有效
 00A0           ;   EOM_Flag=1;}
 00A0           ;  Set_A0(0);                                          //M6模式
 00A0 0027              clr R16
 00A2 D7DF              rcall _Set_A0
 00A4                   .dbline -2
 00A4                   .dbline 89
 00A4           ; }
 00A4           L20:
 00A4 00D0              rcall pop_gset1
 00A6                   .dbline 0 ; func end
 00A6 0895              ret
 00A8                   .dbsym r s 20 c
 00A8                   .dbend
 00A8                   .dbfunc e Play _Play fV
                        .even
 00A8           _Play::
 00A8                   .dbline -1
 00A8                   .dbline 92
 00A8           ; 
 00A8           ; void Play(void)                        //语音播放程序
 00A8           ; {Set_CE(0);                                          //CE线低电平触发芯片的放音操作
 00A8                   .dbline 92
 00A8 0027              clr R16
 00AA B3DF              rcall _Set_CE
 00AC                   .dbline 93
 00AC           ;  Set_CE(1);
 00AC 01E0              ldi R16,1
 00AE B1DF              rcall _Set_CE
 00B0           L28:
 00B0                   .dbline 94
 00B0           ;  do  NOP();
 00B0 0000              nop
 00B2           L29:
 00B2                   .dbline 95
 00B2           ;  while(EOM_Flag);                            //检测EOM标志位,为0时有效
 00B2 20900000          lds R2,_EOM_Flag

⌨️ 快捷键说明

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