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

📄 m8pwm.lis

📁 电动车控制器
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module M8pwm.c
                        .area vector(rom, abs)
                        .org 16
 0010 46C0              rjmp _Timer1_vof
                        .org 28
 001C 3CC0              rjmp _Adc_isr
                        .org 2
 0002 B8C0              rjmp _int0_isr
                        .org 4
 0004 E2C0              rjmp _int1_isr
                        .org 22
 0016 05C1              rjmp _uart0_rx_isr
                        .area data(ram, con, rel)
 0000           _AdResult::
 0000                   .blkb 1
                        .area idata
 0000 10                .byte 16
                        .area data(ram, con, rel)
 0001                   .dbfile D:\EBIKE\eb_pro\M8ProV\M8pwm.c
 0001                   .dbsym e AdResult _AdResult c
 0001           _SpeedVal::
 0001                   .blkb 1
                        .area idata
 0001 00                .byte 0
                        .area data(ram, con, rel)
 0002                   .dbfile D:\EBIKE\eb_pro\M8ProV\M8pwm.c
 0002                   .dbsym e SpeedVal _SpeedVal c
 0002           _RolCount::
 0002                   .blkb 1
                        .area idata
 0002 00                .byte 0
                        .area data(ram, con, rel)
 0003                   .dbfile D:\EBIKE\eb_pro\M8ProV\M8pwm.c
 0003                   .dbsym e RolCount _RolCount c
 0003           _RolNum::
 0003                   .blkb 2
                        .area idata
 0003 0000              .word 0
                        .area data(ram, con, rel)
 0005                   .dbfile D:\EBIKE\eb_pro\M8ProV\M8pwm.c
 0005                   .dbsym e RolNum _RolNum i
 0005           _KiloMeter::
 0005                   .blkb 2
                        .area idata
 0005 0000              .word 0
                        .area data(ram, con, rel)
 0007                   .dbfile D:\EBIKE\eb_pro\M8ProV\M8pwm.c
 0007                   .dbsym e KiloMeter _KiloMeter i
 0007           _OldKiloMeter::
 0007                   .blkb 2
                        .area idata
 0007 0000              .word 0
                        .area data(ram, con, rel)
 0009                   .dbfile D:\EBIKE\eb_pro\M8ProV\M8pwm.c
 0009                   .dbsym e OldKiloMeter _OldKiloMeter i
 0009           _TenMeter::
 0009                   .blkb 1
                        .area idata
 0009 00                .byte 0
                        .area data(ram, con, rel)
 000A                   .dbfile D:\EBIKE\eb_pro\M8ProV\M8pwm.c
 000A                   .dbsym e TenMeter _TenMeter c
 000A           _UartBufCount::
 000A                   .blkb 1
                        .area idata
 000A 00                .byte 0
                        .area data(ram, con, rel)
 000B                   .dbfile D:\EBIKE\eb_pro\M8ProV\M8pwm.c
 000B                   .dbsym e UartBufCount _UartBufCount c
 000B           _LrLedReg::
 000B                   .blkb 1
                        .area idata
 000B 00                .byte 0
                        .area data(ram, con, rel)
 000C                   .dbfile D:\EBIKE\eb_pro\M8ProV\M8pwm.c
 000C                   .dbsym e LrLedReg _LrLedReg c
 000C           _BrakeFlag::
 000C                   .blkb 1
                        .area idata
 000C 00                .byte 0
                        .area data(ram, con, rel)
 000D                   .dbfile D:\EBIKE\eb_pro\M8ProV\M8pwm.c
 000D                   .dbsym e BrakeFlag _BrakeFlag c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\EBIKE\eb_pro\M8ProV\M8pwm.c
 0000                   .dbfunc e Port_init _Port_init fV
                        .even
 0000           _Port_init::
 0000                   .dbline -1
 0000                   .dbline 64
 0000           ; /****************************************************************************** 
 0000           ; 程序名称:电机驱动程序 
 0000           ; 运行平台:ATMaga8 12m晶振 
 0000           ; 程序说明:通过输入来调节pw波 
 0000           ; pc3 作为ad输入 
 0000           ; 
 0000           ; PD5=运行状态指示灯
 0000           ; pb0=左转灯,pb1=右转灯,pb=0时灯亮, 左右灯同时亮起为刹车状态 
 0000           ;  2007-12-24
 0000           ; ******************************************************************************/ 
 0000           ; #include <iom8v.h> 
 0000           ; #include <macros.h> 
 0000           ; 
 0000           ; #pragma  interrupt_handler Timer1_vof:9  //计算速度信息
 0000           ; #pragma  interrupt_handler Adc_isr:15   // 采集握把信号
 0000           ; #pragma  interrupt_handler int0_isr:2    //用于计算每秒钟后轮转过的半圈数
 0000           ; #pragma  interrupt_handler int1_isr:3    //用于相应刹车 
 0000           ; #pragma  interrupt_handler uart0_rx_isr:12//串口接收程序
 0000           ; 
 0000           ; #define  uchar      unsigned char
 0000           ; #define  uint       unsigned int
 0000           ; #define  BRAKE_LED_ON      PORTC |=0x03
 0000           ; #define  BRAKE_LED_OFF     PORTC &=0xfc
 0000           ; #define  LEFT_LED_ON       PORTC |=0x01
 0000           ; #define  LEFT_LED_OFF      PORTC &=0xfe
 0000           ; #define  RIGHT_LED_ON      PORTC |=0x02
 0000           ; #define  RIGHT_LED_OFF     PORTC &=0xfd
 0000           ; #define  EEP_RANG          170
 0000           ; //Variable
 0000           ; unsigned char AdResult=0x10; //保存AD结果
 0000           ; unsigned char SpeedVal=0;    //速度
 0000           ; unsigned char RolCount=0;   //每秒钟后轮转过的半圈数
 0000           ; unsigned int  RolNum=0;     //记录总的圈数据,满1000米后将里程写入eeprom
 0000           ; unsigned int  KiloMeter=0;//里程数据
 0000           ; unsigned int  OldKiloMeter=0; //前一里程数据
 0000           ; unsigned char TenMeter=0;   //十米里程计数
 0000           ; unsigned char UartBuf[10],UartBufCount=0;
 0000           ; unsigned char LrLedReg=0;   //用于保存刹车灯的状态,以便在刹车释放后回复
 0000           ; unsigned char BrakeFlag=0;  //0=刹车松开,0x55=刹车
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; /***************************************************************************/ 
 0000           ; 
 0000           ;  /***************************************************************************/ 
 0000           ;  void Port_init(void); 
 0000           ;  void uart0_init(void);
 0000           ;  void uart0_tx(unsigned char tdata);
 0000           ;  void tx_pack(uchar mode);
 0000           ;  void Timer0_init(void); 
 0000           ;  void Timer1_init(void); 
 0000           ;  void Timer2_init(void);
 0000           ;  void SpeedControl(void);
 0000           ;  void Timer1a_c(void); 
 0000           ;  void Hardware_init(void); 
 0000           ;  void EepromWrite(uchar Address, uchar Data);
 0000           ;  uchar EepromRead(uchar Address);
 0000           ;  void Delay_ms(unsigned int delay_time); 
 0000           ;  void adc_init(void);   
 0000           ; /*************************************************************************** 
 0000           ;                                                     端口初始化 
 0000           ; ****************************************************************************/ 
 0000           ; void Port_init(void) 
 0000           ; { 
 0000                   .dbline 66
 0000           ;  
 0000           ;  PORTB=0b11110111; 
 0000 87EF              ldi R24,247
 0002 88BB              out 0x18,R24
 0004                   .dbline 67
 0004           ;  DDRB =0b00001000;   //PB3用来输出pw波 
 0004 88E0              ldi R24,8
 0006 87BB              out 0x17,R24
 0008                   .dbline 68
 0008           ;  PORTC=0b11111100;   //上拉使能
 0008 8CEF              ldi R24,252
 000A 85BB              out 0x15,R24
 000C                   .dbline 69
 000C           ;  DDRC =0b00100011;   //pc0,1=LR_led,Pc5=led in 
 000C 83E2              ldi R24,35
 000E 84BB              out 0x14,R24
 0010                   .dbline -2
 0010           L1:
 0010                   .dbline 0 ; func end
 0010 0895              ret
 0012                   .dbend
 0012                   .dbfunc e uart0_init _uart0_init fV
                        .even
 0012           _uart0_init::
 0012                   .dbline -1
 0012                   .dbline 82
 0012           ;  //PORTD=0xff; 
 0012           ;  //DDRD =0xe0;   // d6d7=lr_led
 0012           ;  
 0012           ; }
 0012           ; /*************************************************************************** 
 0012           ;              串口0初始化 
 0012           ; ****************************************************************************/  
 0012           ; // desired baud rate: 9600
 0012           ; // actual: baud rate:9615 (0.2%)
 0012           ; // char size: 8 bit
 0012           ; // parity: Disabled
 0012           ; void uart0_init(void)
 0012           ; {
 0012                   .dbline 83
 0012           ;  UCSRB = 0x00; //disable while setting baud rate
 0012 2224              clr R2
 0014 2AB8              out 0xa,R2
 0016                   .dbline 84
 0016           ;  UCSRA = 0x00;
 0016 2BB8              out 0xb,R2
 0018                   .dbline 85
 0018           ;  UCSRC = BIT(URSEL) | 0x06;
 0018 86E8              ldi R24,134
 001A 80BD              out 0x20,R24
 001C                   .dbline 86
 001C           ;  UBRRL = 0x4D; //set baud rate lo
 001C 8DE4              ldi R24,77
 001E 89B9              out 0x9,R24
 0020                   .dbline 87
 0020           ;  UBRRH = 0x00; //set baud rate hi
 0020 20BC              out 0x20,R2
 0022                   .dbline 88
 0022           ;  UCSRB = 0x98;
 0022 88E9              ldi R24,152
 0024 8AB9              out 0xa,R24
 0026                   .dbline -2
 0026           L2:
 0026                   .dbline 0 ; func end
 0026 0895              ret
 0028                   .dbend
 0028                   .dbfunc e Timer1_init _Timer1_init fV
                        .even
 0028           _Timer1_init::
 0028                   .dbline -1
 0028                   .dbline 96
 0028           ; }
 0028           ; 
 0028           ; /*************************************************************************** 
 0028           ;                                                     定时器1初始化 
 0028           ; ****************************************************************************/ 
 0028           ; //定时器1主要用来做速度扫描
 0028           ; void Timer1_init(void)                      
 0028           ; { 
 0028                   .dbline 98
 0028           ;  //定时器1部分 ,1024分频,定时1s 
 0028           ;    TCCR1B = 0x00; //stop
 0028 2224              clr R2
 002A 2EBC              out 0x2e,R2
 002C                   .dbline 99
 002C           ;    TCNT1H = 0xD2; //setup
 002C 82ED              ldi R24,210
 002E 8DBD              out 0x2d,R24
 0030                   .dbline 100
 0030           ;    TCNT1L = 0x3A;
 0030 8AE3              ldi R24,58
 0032 8CBD              out 0x2c,R24
 0034                   .dbline 101
 0034           ;    OCR1AH = 0x3D;
 0034 8DE3              ldi R24,61
 0036 8BBD              out 0x2b,R24
 0038                   .dbline 102
 0038           ;    OCR1AL = 0x09;
 0038 89E0              ldi R24,9
 003A 8ABD              out 0x2a,R24
 003C                   .dbline 103
 003C           ;    OCR1BH = 0x3D;
 003C 8DE3              ldi R24,61
 003E 89BD              out 0x29,R24
 0040                   .dbline 104
 0040           ;    OCR1BL = 0x09;
 0040 89E0              ldi R24,9
 0042 88BD              out 0x28,R24
 0044                   .dbline 107
 0044           ;    //OCR1CH = $OCR1CH$;
 0044           ;    //OCR1CL = $OCR1CL$;
 0044           ;    ICR1H  = 0x3D;
 0044 8DE3              ldi R24,61
 0046 87BD              out 0x27,R24
 0048                   .dbline 108
 0048           ;    ICR1L  = 0x09;
 0048 89E0              ldi R24,9
 004A 86BD              out 0x26,R24
 004C                   .dbline 109
 004C           ;    TCCR1A = 0x00;
 004C 2FBC              out 0x2f,R2
 004E                   .dbline 110
 004E           ;    TCCR1B = 0x05; //start Timer
 004E 85E0              ldi R24,5
 0050 8EBD              out 0x2e,R24
 0052                   .dbline -2
 0052           L3:
 0052                   .dbline 0 ; func end
 0052 0895              ret
 0054                   .dbend
 0054                   .dbfunc e Timer2_init _Timer2_init fV
                        .even
 0054           _Timer2_init::
 0054                   .dbline -1
 0054                   .dbline 119
 0054           ; } 
 0054           ; /*************************************************************************** 
 0054           ;            Timer2初始化 ,PWM
 0054           ; ****************************************************************************/ 
 0054           ; // desired value: 20KHz 
 0054           ; // actual value: 20.000KHz (0.0%) 
 0054           ; //定时器0用来产生PW波 
 0054           ; void Timer2_init(void)
 0054           ; {
 0054                   .dbline 120
 0054           ;  TCCR2 = 0x00; //stop
 0054 2224              clr R2
 0056 25BC              out 0x25,R2
 0058                   .dbline 121
 0058           ;  ASSR  = 0x00; //set async mode
 0058 22BC              out 0x22,R2
 005A                   .dbline 122
 005A           ;  TCNT2 = 0x0; //setup
 005A 24BC              out 0x24,R2
 005C                   .dbline 123
 005C           ;  OCR2  = 0x1;//设置OCR2
 005C 81E0              ldi R24,1

⌨️ 快捷键说明

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