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

📄 lesson10.lis

📁 用TMS320F2808芯片
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module lesson10.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\zhanghanyu\桌面\ICC\chengxu10\lesson10\lesson10.c
                        .area vector(rom, abs)
                        .org 36
 0024 57C0              rjmp _uart_rx
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\zhanghanyu\桌面\ICC\chengxu10\lesson10\lesson10.c
                        .area data(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\zhanghanyu\桌面\ICC\chengxu10\lesson10\lesson10.c
 0000           _flag::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile C:\DOCUME~1\zhanghanyu\桌面\ICC\chengxu10\lesson10\lesson10.c
 0001                   .dbsym e flag _flag c
 0001           _Data_Len::
 0001                   .blkb 1
                        .area idata
 0001 00                .byte 0
                        .area data(ram, con, rel)
 0002                   .dbfile C:\DOCUME~1\zhanghanyu\桌面\ICC\chengxu10\lesson10\lesson10.c
 0002                   .dbsym e Data_Len _Data_Len c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\zhanghanyu\桌面\ICC\chengxu10\lesson10\lesson10.c
 0000                   .dbfunc e delay _delay fV
 0000           ;              i -> R20,R21
 0000           ;              j -> R22,R23
 0000           ;             ms -> R16,R17
                        .even
 0000           _delay::
 0000 00D0              rcall push_xgsetF000
 0002                   .dbline -1
 0002                   .dbline 16
 0002           ; #include <iom88v.h>
 0002           ; #include <macros.h>
 0002           ; #define  uchar unsigned char
 0002           ; #define  uint  unsigned int
 0002           ; 
 0002           ; //晶振 7.3728MHZ
 0002           ; #define  mclk   7372800          
 0002           ; // #pragma interrupt_handler uart_rx:12
 0002           ; #pragma interrupt_handler uart_rx:iv_USART0_RXC
 0002           ; uchar rdata,flag=0;
 0002           ; uchar Rec_Data[27];
 0002           ; uchar Data_Len =0,i;
 0002           ; uchar adcL,adcH;
 0002           ; uint  adresult;
 0002           ; void delay(uint ms)   //延时函数
 0002           ; {
 0002                   .dbline 18
 0002           ;         uint i,j;
 0002           ;       for(i=0;i<ms;i++)
 0002 4427              clr R20
 0004 5527              clr R21
 0006 0BC0              rjmp L5
 0008           L2:
 0008                   .dbline 19
 0008           ;          {
 0008                   .dbline 20
 0008           ;          for(j=0;j<1100;j++);
 0008 6627              clr R22
 000A 7727              clr R23
 000C 02C0              rjmp L9
 000E           L6:
 000E                   .dbline 20
 000E           L7:
 000E                   .dbline 20
 000E 6F5F              subi R22,255  ; offset = 1
 0010 7F4F              sbci R23,255
 0012           L9:
 0012                   .dbline 20
 0012 6C34              cpi R22,76
 0014 E4E0              ldi R30,4
 0016 7E07              cpc R23,R30
 0018 D0F3              brlo L6
 001A           X0:
 001A                   .dbline 21
 001A           ;        }
 001A           L3:
 001A                   .dbline 18
 001A 4F5F              subi R20,255  ; offset = 1
 001C 5F4F              sbci R21,255
 001E           L5:
 001E                   .dbline 18
 001E 4017              cp R20,R16
 0020 5107              cpc R21,R17
 0022 90F3              brlo L2
 0024           X1:
 0024                   .dbline -2
 0024           L1:
 0024                   .dbline 0 ; func end
 0024 00C0              rjmp pop_xgsetF000
 0026                   .dbsym r i 20 i
 0026                   .dbsym r j 22 i
 0026                   .dbsym r ms 16 i
 0026                   .dbend
 0026                   .dbfunc e uart_init _uart_init fV
 0026           ;           baud -> R10,R11
                        .even
 0026           _uart_init::
 0026 00D0              rcall push_xgsetF00C
 0028 5801              movw R10,R16
 002A                   .dbline -1
 002A                   .dbline 27
 002A           ; } 
 002A           ; 
 002A           ; //0D 0A 3E 0D 0A 52 65 61 64 20 46 77 64 20 33 3E 0D 0A 20 39 33 31 36 37 3F 20 20
 002A           ; //0D 0A 3E 0D 0A 52 65 61 64 20 46 6C 6F 77 20 31 3E 0D 0A 20 35 34 2E 39 32 30 3F 20 20
 002A           ; void uart_init(uint baud)     //串口初始化
 002A           ; {
 002A                   .dbline 29
 002A           ; 
 002A           ;     UCSR0B=0x00; 
 002A 2224              clr R2
 002C 2092C100          sts 193,R2
 0030                   .dbline 30
 0030           ;    UCSR0A=0x00;                   //控制寄存器清零
 0030 2092C000          sts 192,R2
 0034                   .dbline 31
 0034           ;    UCSR0C=(1<<UCSZ01)|(1<<UCSZ00);   
 0034 86E0              ldi R24,6
 0036 8093C200          sts 194,R24
 003A                   .dbline 34
 003A           ;                                                         //选择UCSRC,异步模式,禁止                        
 003A           ;                                                      //   校验,1位停止位,8位数据位
 003A           ;    baud=mclk/16/baud-1        ;   //波特率最大为65K
 003A 1501              movw R2,R10
 003C 4424              clr R4
 003E 5524              clr R5
 0040 40E0              ldi R20,0
 0042 58E0              ldi R21,8
 0044 67E0              ldi R22,7
 0046 70E0              ldi R23,0
 0048 5A92              st -y,R5
 004A 4A92              st -y,R4
 004C 3A92              st -y,R3
 004E 2A92              st -y,R2
 0050 8A01              movw R16,R20
 0052 9B01              movw R18,R22
 0054 00D0              rcall div32s
 0056 41E0              ldi R20,1
 0058 50E0              ldi R21,0
 005A 60E0              ldi R22,0
 005C 70E0              ldi R23,0
 005E 1801              movw R2,R16
 0060 2901              movw R4,R18
 0062 241A              sub R2,R20
 0064 350A              sbc R3,R21
 0066 460A              sbc R4,R22
 0068 570A              sbc R5,R23
 006A 5101              movw R10,R2
 006C                   .dbline 35
 006C           ;    UBRR0L=baud;                                                 
 006C A092C400          sts 196,R10
 0070                   .dbline 36
 0070           ;    UBRR0H=baud>>8;               //设置波特率
 0070 232C              mov R2,R3
 0072 3324              clr R3
 0074 2092C500          sts 197,R2
 0078                   .dbline 37
 0078           ;    UCSR0B=(1<<TXEN0)|(1<<RXEN0)|(1<<RXCIE0); 
 0078 88E9              ldi R24,152
 007A 8093C100          sts 193,R24
 007E                   .dbline 39
 007E           ;                                                        //接收、发送使能,接收中断使能
 007E           ;    SREG=BIT(7);                       //全局中断开放
 007E 80E8              ldi R24,128
 0080 8FBF              out 0x3f,R24
 0082                   .dbline 40
 0082           ;    DDRD|=0X02;                        //配置TX为输出(很重要)
 0082 519A              sbi 0xa,1
 0084                   .dbline -2
 0084           L10:
 0084                   .dbline 0 ; func end
 0084 00C0              rjmp pop_xgsetF00C
 0086                   .dbsym r baud 10 i
 0086                   .dbend
 0086                   .dbfunc e adc_init _adc_init fV
                        .even
 0086           _adc_init::
 0086                   .dbline -1
 0086                   .dbline 45
 0086           ; 
 0086           ; }
 0086           ; 
 0086           ; void adc_init(void)
 0086           ; {
 0086                   .dbline 46
 0086           ;  ADCSRA = 0x00; //disable adc
 0086 2224              clr R2
 0088 20927A00          sts 122,R2
 008C                   .dbline -2
 008C           L11:
 008C                   .dbline 0 ; func end
 008C 0895              ret
 008E                   .dbend
 008E                   .dbfunc e uart_sendB _uart_sendB fV
 008E           ;           data -> R16
                        .even
 008E           _uart_sendB::
 008E                   .dbline -1
 008E                   .dbline 50
 008E           ;  //ADMUX = 0x46;  //选择AVCC为参考,采集电压右对齐,1110 1.1V
 008E           ; }
 008E           ; void uart_sendB(uchar data)   //发送字符
 008E           ; {
 008E           L13:
 008E                   .dbline 51
 008E           ;    while(!(UCSR0A&(BIT(UDRE0)))) ;
 008E           L14:
 008E                   .dbline 51
 008E 2090C000          lds R2,192
 0092 25FE              sbrs R2,5
 0094 FCCF              rjmp L13
 0096           X2:
 0096                   .dbline 52
 0096           ;    UDR0=data;
 0096 0093C600          sts 198,R16
 009A           L16:
 009A                   .dbline 53
 009A           ;    while(!(UCSR0A&(BIT(TXC0))));
 009A           L17:
 009A                   .dbline 53
 009A 2090C000          lds R2,192
 009E 26FE              sbrs R2,6
 00A0 FCCF              rjmp L16
 00A2           X3:
 00A2                   .dbline 54
 00A2           ;    UCSR0A|=BIT(TXC0);
 00A2 8091C000          lds R24,192
 00A6 8064              ori R24,64
 00A8 8093C000          sts 192,R24
 00AC                   .dbline -2
 00AC           L12:
 00AC                   .dbline 0 ; func end
 00AC 0895              ret
 00AE                   .dbsym r data 16 c
 00AE                   .dbend
 00AE                   .dbfunc e uart_rx _uart_rx fV
                        .even
 00AE           _uart_rx::
 00AE 2A92              st -y,R2
 00B0 8A93              st -y,R24
 00B2 9A93              st -y,R25
 00B4 2FB6              in R2,0x3f
 00B6 2A92              st -y,R2
 00B8                   .dbline -1
 00B8                   .dbline 57
 00B8           ; }
 00B8           ; void uart_rx()                        //接收字符
 00B8           ; {
 00B8                   .dbline 58
 00B8           ;     UCSR0B&=~BIT(RXCIE0);
 00B8 8091C100          lds R24,193
 00BC 8F77              andi R24,127
 00BE 8093C100          sts 193,R24
 00C2                   .dbline 59
 00C2           ;       rdata=UDR0;
 00C2 2090C600          lds R2,198
 00C6 20922000          sts _rdata,R2
 00CA                   .dbline 61
 00CA           ;       //flag=1;
 00CA           ;       Data_Len++;
 00CA 80910100          lds R24,_Data_Len
 00CE 8F5F              subi R24,255    ; addi 1
 00D0 80930100          sts _Data_Len,R24
 00D4                   .dbline 62
 00D4           ;       UCSR0B|=BIT(RXCIE0);

⌨️ 快捷键说明

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