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

📄 ytcpg01.lis

📁 使用AVR的云台控制器程序,通过串口和PC机通讯实现在监控电脑上控制摄像机云台.通过SPI口进行串并转换实现单片机IO扩展.
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module ytcpg01.c
                        .area data(ram, con, rel)
 0000           _tmpRx::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile E:\job\elite\云台控制器\avr\ytcpg01.c
 0001                   .dbsym e tmpRx _tmpRx c
 0001           _RXCR::
 0001                   .blkb 1
                        .area idata
 0001 00                .byte 0
                        .area data(ram, con, rel)
 0002                   .dbfile E:\job\elite\云台控制器\avr\ytcpg01.c
 0002                   .dbsym e RXCR _RXCR c
 0002           _RXstartFlag::
 0002                   .blkb 1
                        .area idata
 0002 00                .byte 0
                        .area data(ram, con, rel)
 0003                   .dbfile E:\job\elite\云台控制器\avr\ytcpg01.c
 0003                   .dbsym e RXstartFlag _RXstartFlag c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\job\elite\云台控制器\avr\ytcpg01.c
 0000                   .dbfunc e watchdog_init _watchdog_init fV
                        .even
 0000           _watchdog_init::
 0000                   .dbline -1
 0000                   .dbline 51
 0000           ; //update on 2004-04-22 21:45 
 0000           ; //chage Level check : DBNEW
 0000           ; // deal with rotory speed unsteable
 0000           ; 
 0000           ; 
 0000           ; //one charter a to send
 0000           ; #include <iom8515v.h>
 0000           ; #include <macros.h>
 0000           ; #include <eeprom.h>
 0000           ; 
 0000           ; //outport define
 0000           ; #define OUTau8ON PORTC|=0x01
 0000           ; #define OUTau8OFF PORTC&=~0x01        
 0000           ; #define OUTau7ON PORTC|=0x02
 0000           ; #define OUTau7OFF PORTC&=~0x02
 0000           ; #define OUTau6ON PORTC|=0x04
 0000           ; #define OUTau6OFF PORTC&=~0x04        
 0000           ; #define OUTau5ON PORTC|=0x08
 0000           ; #define OUTau5OFF PORTC&=~0x08
 0000           ; #define OUTau4ON PORTC|=0x10
 0000           ; #define OUTau4OFF PORTC&=~0x10        
 0000           ; #define OUTau3ON PORTC|=0x20
 0000           ; #define OUTau3OFF PORTC&=~0x20
 0000           ; #define OUTau2ON PORTC|=0x40
 0000           ; #define OUTau2OFF PORTC&=~0x40        
 0000           ; #define OUTau1ON PORTC|=0x80
 0000           ; #define OUTau1OFF PORTC&=~0x80
 0000           ; #define OUTau1Pulse PORTC^=0x80
 0000           ;     
 0000           ; #define CLROFF PORTB|=0x01
 0000           ; #define CLRON PORTB&=~0x01
 0000           ; 
 0000           ; #define BOARDID '1'
 0000           ; 
 0000           ; //全局变量
 0000           ; unsigned char OPDATA[12];
 0000           ; 
 0000           ; 
 0000           ; unsigned char TXbuf[18];
 0000           ; unsigned char RXbuf[18];
 0000           ; unsigned char tmpRx=0;
 0000           ; unsigned char RXCR=0;
 0000           ; unsigned char RXstartFlag=0;
 0000           ; 
 0000           ; union mdd {
 0000           ;            unsigned int TXCRC;
 0000           ;                  unsigned char txCRC[2];
 0000           ;           }CRCT;
 0000           ; 
 0000           ; void watchdog_init(void)
 0000           ;      {
 0000                   .dbline 52
 0000           ;          WDR();
 0000 A895              wdr
 0002                   .dbline 53
 0002           ;          WDTCR=0x0F ;
 0002 8FE0              ldi R24,15
 0004 81BD              out 0x21,R24
 0006                   .dbline -2
 0006           L1:
 0006                   .dbline 0 ; func end
 0006 0895              ret
 0008                   .dbend
 0008                   .dbfunc e Delay_1ms _Delay_1ms fV
 0008           ;              i -> R16,R17
                        .even
 0008           _Delay_1ms::
 0008                   .dbline -1
 0008                   .dbline 57
 0008           ;        }
 0008           ;        
 0008           ; void Delay_1ms(void)
 0008           ;       {
 0008                   .dbline 60
 0008           ;       unsigned int i;
 0008           ; 
 0008           ;       for (i = 1; i<1140; i++)
 0008 01E0              ldi R16,1
 000A 10E0              ldi R17,0
 000C 02C0              rjmp L6
 000E           L3:
 000E                   .dbline 62
 000E           L4:
 000E                   .dbline 60
 000E 0F5F              subi R16,255  ; offset = 1
 0010 1F4F              sbci R17,255
 0012           L6:
 0012                   .dbline 60
 0012 0437              cpi R16,116
 0014 E4E0              ldi R30,4
 0016 1E07              cpc R17,R30
 0018 D0F3              brlo L3
 001A                   .dbline -2
 001A           L2:
 001A                   .dbline 0 ; func end
 001A 0895              ret
 001C                   .dbsym r i 16 i
 001C                   .dbend
 001C                   .dbfunc e delayXms _delayXms fV
 001C           ;              i -> R20,R21
 001C           ;              n -> R22,R23
                        .even
 001C           _delayXms::
 001C 00D0              rcall push_gset2
 001E B801              movw R22,R16
 0020                   .dbline -1
 0020                   .dbline 66
 0020           ;               
 0020           ;                       ;
 0020           ;       }
 0020           ; 
 0020           ; void delayXms(unsigned int n)
 0020           ;      {
 0020                   .dbline 67
 0020           ;          unsigned int i=0;
 0020 4427              clr R20
 0022 5527              clr R21
 0024 03C0              rjmp L9
 0026           L8:
 0026                   .dbline 69
 0026                   .dbline 70
 0026 F0DF              rcall _Delay_1ms
 0028                   .dbline 71
 0028 4F5F              subi R20,255  ; offset = 1
 002A 5F4F              sbci R21,255
 002C                   .dbline 72
 002C           L9:
 002C                   .dbline 68
 002C           ;          while(i<n)
 002C 4617              cp R20,R22
 002E 5707              cpc R21,R23
 0030 D0F3              brlo L8
 0032                   .dbline -2
 0032           L7:
 0032 00D0              rcall pop_gset2
 0034                   .dbline 0 ; func end
 0034 0895              ret
 0036                   .dbsym r i 20 i
 0036                   .dbsym r n 22 i
 0036                   .dbend
 0036                   .dbfunc e port_init _port_init fV
                        .even
 0036           _port_init::
 0036                   .dbline -1
 0036                   .dbline 76
 0036           ;            {
 0036           ;                 Delay_1ms();
 0036           ;                 i++;
 0036           ;                }
 0036           ;        }
 0036           ;        
 0036           ; void port_init(void)
 0036           ;      {
 0036                   .dbline 77
 0036           ;         PORTA=0xF0;    //PA set to 1
 0036 80EF              ldi R24,240
 0038 8BBB              out 0x1b,R24
 003A                   .dbline 78
 003A           ;         DDRA=0xF0;     //PA0-PA3:ADC PA4-PA6:KL0-KL2(OUT)
 003A 8ABB              out 0x1a,R24
 003C                   .dbline 81
 003C           ;                        //PA7:LCD-E  (OUTPUT)
 003C           ;                                        
 003C           ;         PORTB=0xFF;    //PB set to 1
 003C 8FEF              ldi R24,255
 003E 88BB              out 0x18,R24
 0040                   .dbline 82
 0040           ;         DDRB=0xFF;     //PB0-PB2:QN0-QN2    PB3:TEMPC(OUT)
 0040 87BB              out 0x17,R24
 0042                   .dbline 85
 0042           ;                        //PB4-PB7:KR0-KR3(IN)
 0042           ;                                        
 0042           ;         PORTC=0x00;    //PC set to 1
 0042 2224              clr R2
 0044 25BA              out 0x15,R2
 0046                   .dbline 86
 0046           ;         DDRC=0xFF;     //PC0-PC7:DB0-DB7
 0046 84BB              out 0x14,R24
 0048                   .dbline 88
 0048           ;             
 0048           ;         PORTD=0x00;    //PD set to 1
 0048 22BA              out 0x12,R2
 004A                   .dbline 89
 004A           ;         DDRD=0x02;     
 004A 82E0              ldi R24,2
 004C 81BB              out 0x11,R24
 004E                   .dbline 92
 004E           ;         //OUTDEON;
 004E           ;         
 004E           ;       SFIOR&=~(1<<PUD);  //OPEN UP LINK
 004E 80B7              in R24,0x30
 0050 8B7F              andi R24,251
 0052 80BF              out 0x30,R24
 0054                   .dbline -2
 0054           L11:
 0054                   .dbline 0 ; func end
 0054 0895              ret
 0056                   .dbend
 0056                   .dbfunc e SPI_MasterInit _SPI_MasterInit fV
                        .even
 0056           _SPI_MasterInit::
 0056                   .dbline -1
 0056                   .dbline 98
 0056           ;         
 0056           ;         //delayXms(2000); //delay 1s
 0056           ;        }
 0056           ;        
 0056           ; void SPI_MasterInit(void)
 0056           ;      {
 0056                   .dbline 100
 0056           ;         //SPCR=0xD1; //SPIE ,SPE ,Master enable ;1/16 Fcl
 0056           ;         SPCR=0x51;  // ,SPE ,Master enable ;1/16 Fcl
 0056 81E5              ldi R24,81
 0058 8DB9              out 0xd,R24
 005A                   .dbline -2
 005A           L12:
 005A                   .dbline 0 ; func end
 005A 0895              ret
 005C                   .dbend
 005C                   .dbfunc e SPI_Tran _SPI_Tran fV
 005C           ;              i -> R16
                        .even
 005C           _SPI_Tran::
 005C                   .dbline -1
 005C                   .dbline 103
 005C           ;        }
 005C           ; void SPI_Tran(void)
 005C           ;  {
 005C                   .dbline 105
 005C           ;   unsigned char i;
 005C           ;  for(i=8;i>0;i--)
 005C 08E0              ldi R16,8
 005E 0BC0              rjmp L17
 0060           L14:
 0060                   .dbline 106
 0060           ;  {
 0060                   .dbline 107
 0060           ;   SPDR=OPDATA[i];
 0060 80E0              ldi R24,<_OPDATA
 0062 90E0              ldi R25,>_OPDATA
 0064 E02F              mov R30,R16
 0066 FF27              clr R31
 0068 E80F              add R30,R24
 006A F91F              adc R31,R25
 006C 2080              ldd R2,z+0
 006E 2FB8              out 0xf,R2
 0070           L18:
 0070                   .dbline 108
 0070           L19:
 0070                   .dbline 108
 0070 779B              sbis 0xe,7
 0072 FECF              rjmp L18
 0074                   .dbline 109
 0074           L15:
 0074                   .dbline 105
 0074 0A95              dec R16
 0076           L17:
 0076                   .dbline 105
 0076 2224              clr R2
 0078 2016              cp R2,R16
 007A 90F3              brlo L14
 007C                   .dbline -2
 007C           L13:
 007C                   .dbline 0 ; func end
 007C 0895              ret
 007E                   .dbsym r i 16 c
 007E                   .dbend

⌨️ 快捷键说明

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