www.pudn.com > usbcode.rar > MainLoop.lis


                         .module MainLoop.c 
                         .area text(rom, con, rel) 
 0000                   .dbfile G:\source\MainLoop.c 
 0000                   .dbfunc s main _main fI 
                         .even 
 0000                 _main:: 
 0000                   .dbline -1 
 0000                   .dbline 48 
                       ; /*++ 
                       ;  
                       ; Module Name: 
                       ;  
                       ;          MainLoop.h 
                       ;  
                       ; Abstract: 
                       ;  
                       ;          Header file related to D12 module 
                       ;  
                       ; Environment: 
                       ;  
                       ;         ICCAVR 6.29 
                       ;  
                       ; Revision History: 
                       ;  
                       ;         04/23/2004      chenchi   created 
                       ;  
                       ; --*/ 
                       ; /******************************************************************/ 
                       ; #include "io8515v.h" 
                       ; #include  
                       ; #include "d12.h" 
                       ; /************************************************************ 
                       ; **工程名称:U盘固件程序开发 
                       ; **编译器类型及版本:ICCAVR 6.26C 
                       ; **日期:2004.4.30 
                       ; **创建人:陈驰 
                       ; **所属单位:湖南大学计算机与通信学院 
                       ;  
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
                       ; **时钟频率:8MHZ 
                       ;  
                       ; **函数功能:主函数 
                       ; **函数输入参数及说明:无 
                       ;  
                       ; **函数返回值:无 
                       ; **在本函数以外定义的变量:D12_COMMAND,D12_DATA 
                       ; **调用的函数说明: 
                       ;   D12_ISR(); 
                       ;   中断处理函数 
                       ;    
                       ; **修改人:陈驰 
                       ; **修改日期:2004.4.30 
                       ; **修改说明:创建 
                       ; *************************************************************/ 
                       ; void main(void) 
                       ; { 
 0000                   .dbline 50 
                       ;     //芯片初始化 
                       ;     PORTC = 0xff; 
 0000 8FEF              ldi R24,255 
 0002 85BB              out 0x15,R24 
 0004                   .dbline 51 
                       ;     DDRC  = 0xff;//保持状态 
 0004 84BB              out 0x14,R24 
 0006                   .dbline 53 
                       ;  
                       ;     DDRD  = 0xea; //1110 1010关闭引脚上拉电阻,使正确读取引脚输入 
 0006 8AEE              ldi R24,234 
 0008 81BB              out 0x11,R24 
 000A                   .dbline 54 
                       ;     PORTD = 0xd8; //1101 1000 
 000A 88ED              ldi R24,216 
 000C 82BB              out 0x12,R24 
 000E                   .dbline 55 
                       ;     DDRA  = 0xff; //关闭上拉电阻,使正确读写外部SRAM 
 000E 8FEF              ldi R24,255 
 0010 8ABB              out 0x1a,R24 
 0012                   .dbline 57 
                       ;      
                       ;     MCUCR = 0xc5; 
 0012 85EC              ldi R24,197 
 0014 85BF              out 0x35,R24 
 0016                   .dbline 58 
                       ;     DDRC  = 0x00; 
 0016 2224              clr R2 
 0018 24BA              out 0x14,R2 
 001A                   .dbline 59 
                       ;     D12_COMMAND = 0xf3; 
 001A 83EF              ldi R24,243 
 001C 8093017C          sts 31745,R24 
 0020                   .dbline 60 
                       ;     cwait; 
 0020 0000              nop 
 0022                   .dbline 61 
                       ;     D12_DATA = 0x06;//设置模式0 
 0022 86E0              ldi R24,6 
 0024 8093007C          sts 31744,R24 
 0028                   .dbline 62 
                       ;     cwait; 
 0028 0000              nop 
 002A                   .dbline 63 
                       ;     D12_COMMAND = 0xd0; 
 002A 80ED              ldi R24,208 
 002C 8093017C          sts 31745,R24 
 0030                   .dbline 64 
                       ;     cwait; 
 0030 0000              nop 
 0032                   .dbline 65 
                       ;     D12_DATA = 0x80;//设置地址 0 使能 
 0032 80E8              ldi R24,128 
 0034 8093007C          sts 31744,R24 
 0038                   .dbline 66 
                       ;     cwait; 
 0038 0000              nop 
 003A                   .dbline 67 
                       ;     D12_COMMAND = 0xf3;//连接主机 
 003A 83EF              ldi R24,243 
 003C 8093017C          sts 31745,R24 
 0040                   .dbline 68 
                       ;     cwait; 
 0040 0000              nop 
 0042                   .dbline 69 
                       ;     D12_DATA = 0x16; 
 0042 86E1              ldi R24,22 
 0044 8093007C          sts 31744,R24 
 0048                   .dbline 70 
                       ;     cwait; 
 0048 0000              nop 
 004A                   .dbline 71 
                       ;     D12_DATA = 0x05;//初始化频率 8MHz 
 004A 85E0              ldi R24,5 
 004C 8093007C          sts 31744,R24 
 0050                   .dbline 72 
                       ;     csram; 
 0050 609301FC          sts 0xfc01,R22 
 0054                   .dbline 72 
 0054                   .dbline 74 
                       ;      
                       ;     TCCR1B = 0xc0;//启动ICP上升沿出入捕获 
 0054 80EC              ldi R24,192 
 0056 8EBD              out 0x2e,R24 
 0058                   .dbline 76 
                       ;      
                       ;     UCR  = 0x00; //disable while setting baud rate 
 0058 2AB8              out 0xa,R2 
 005A                   .dbline 77 
                       ;     UBRR = 25; //set baud rate 19.2K 波特率 
 005A 89E1              ldi R24,25 
 005C 89B9              out 0x9,R24 
 005E                   .dbline 78 
                       ;     UCR  = 0xd8; //enable 0001 1101 
 005E 88ED              ldi R24,216 
 0060 8AB9              out 0xa,R24 
 0062 03C0              rjmp L4 
 0064                 L3: 
 0064                   .dbline 80 
                       ;     while(1) 
                       ;     { 
 0064                   .dbline 81 
                       ;         if(!D12_int_n)//判断D12中断,低电平触发 
 0064 8299              sbic 0x10,2 
 0066 01C0              rjmp L6 
 0068                   .dbline 82 
                       ;         { 
 0068                   .dbline 83 
                       ;             D12_ISR();//中断服务程序 
 0068 00D0              rcall _D12_ISR 
 006A                   .dbline 84 
                       ;         } 
 006A                 L6: 
 006A                   .dbline 85 
 006A                 L4: 
 006A                   .dbline 79 
 006A FCCF              rjmp L3 
 006C                 X0: 
 006C                   .dbline -2 
 006C                   .dbline 86 
                       ;     } 
                       ; } 
 006C                 L2: 
 006C                   .dbline 0 ; func end 
 006C 0895              ret