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

📄 cscj_timer1.lis

📁 一个超声波测距的东西
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module cscj_timer1.C
                        .area data(ram, con, rel)
 0000           _AC_TABLE::
 0000                   .blkb 2
                        .area idata
 0000 8081              .byte 128,129
                        .area data(ram, con, rel)
 0002                   .blkb 2
                        .area idata
 0002 8283              .byte 130,131
                        .area data(ram, con, rel)
 0004                   .blkb 2
                        .area idata
 0004 8485              .byte 132,133
                        .area data(ram, con, rel)
 0006                   .blkb 2
                        .area idata
 0006 8687              .byte 134,135
                        .area data(ram, con, rel)
 0008                   .blkb 2
                        .area idata
 0008 9091              .byte 144,145
                        .area data(ram, con, rel)
 000A                   .blkb 2
                        .area idata
 000A 9293              .byte 146,147
                        .area data(ram, con, rel)
 000C                   .blkb 2
                        .area idata
 000C 9495              .byte 148,149
                        .area data(ram, con, rel)
 000E                   .blkb 2
                        .area idata
 000E 9697              .byte 150,151
                        .area data(ram, con, rel)
 0010                   .blkb 2
                        .area idata
 0010 8889              .byte 136,137
                        .area data(ram, con, rel)
 0012                   .blkb 2
                        .area idata
 0012 8A8B              .byte 138,139
                        .area data(ram, con, rel)
 0014                   .blkb 2
                        .area idata
 0014 8C8D              .byte 140,141
                        .area data(ram, con, rel)
 0016                   .blkb 2
                        .area idata
 0016 8E8F              .byte 142,143
                        .area data(ram, con, rel)
 0018                   .blkb 2
                        .area idata
 0018 9899              .byte 152,153
                        .area data(ram, con, rel)
 001A                   .blkb 2
                        .area idata
 001A 9A9B              .byte 154,155
                        .area data(ram, con, rel)
 001C                   .blkb 2
                        .area idata
 001C 9C9D              .byte 156,157
                        .area data(ram, con, rel)
 001E                   .blkb 2
                        .area idata
 001E 9E9F              .byte 158,159
                        .area data(ram, con, rel)
 0020                   .dbfile d:\我的文档\桌面\超声波/12864.h
 0020                   .dbsym e AC_TABLE _AC_TABLE A[32:32]c
                        .area text(rom, con, rel)
 0000                   .dbfile d:\我的文档\桌面\超声波/12864.h
 0000                   .dbfunc e delay_us _delay_us fV
 0000           ;              i -> R20,R21
 0000           ;              j -> R22,R23
 0000           ;              t -> R16,R17
                        .even
 0000           _delay_us::
 0000 0E940000          xcall push_gset2
 0004                   .dbline -1
 0004                   .dbline 63
 0004           ; /*******************************************
 0004           ; * 文件名: ultrawave.c
 0004           ; * 功能: 用超声波模块检测小车前方是否有障碍物并测量其距离
 0004           ; * 说明: 
 0004           ;           1.定时器0产生40khz占空比50%的方波驱动超声波发射头发射超声波
 0004           ;           2.定时器1定时计算超声波发射到接收需要的时间,从而计算距离
 0004           ;                 3.外部中断2用于检测是否遇到障碍物 遇到障碍物时进入外部中断处理子函数
 0004           ;                 4.分段进行距离校正,3~10cm减2cm,10~20减1cm,20~100精确
 0004           ; /********************************************/
 0004           ; #include <iom128v.h>
 0004           ; #include <macros.h>
 0004           ; #include "12864.h"
 0004           ; //变量、常量定义
 0004           ; static uchar data[16];
 0004           ; static float distance=0.0;
 0004           ; volatile flag=0;
 0004           ; volatile uint time_counter=0;
 0004           ; //中断定义
 0004           ; #pragma interrupt_handler interrupt_int2:4 
 0004           ; #pragma interrupt_handler interrupt_timer1:15
 0004           ; 
 0004           ; /*******************************************
 0004           ; * 函数名称: int2()
 0004           ; * 函数功能: 进入中断后置标志位,表示收到超声波,并计算距离           
 0004           ; * 入口参数: 无
 0004           ; * 出口参数: 无
 0004           ; /********************************************/
 0004           ; void interrupt_int2()  
 0004           ; {
 0004           ;    DDRB &= ~BIT(PB4); 
 0004           ;    EIMSK &= ~BIT(2);
 0004           ;    TIMSK &= ~BIT(2);   
 0004           ;    flag = 1;  
 0004           ; }
 0004           ; 
 0004           ; /*******************************************
 0004           ; * 函数名称: timer1()
 0004           ; * 函数功能: 进入定时器中断后time_counter加1,用于距离的计算
 0004           ; * 入口参数: 无
 0004           ; * 出口参数: 无
 0004           ; /********************************************/
 0004           ; void interrupt_timer1()
 0004           ; {
 0004           ;    TCNT1H = 0xff;
 0004           ;    TCNT1L = 0x60;
 0004           ;    time_counter++;
 0004           ;    if(time_counter == 589)//设定测量上限为1米
 0004           ;        {
 0004           ;              TIMSK &= ~BIT(2);   
 0004           ;              time_counter = 589;
 0004           ;           }              
 0004           ; }
 0004           ; 
 0004           ; /*******************************************
 0004           ; * 函数名称: int2_init()
 0004           ; * 函数功能: 外部中断2初始化
 0004           ; * 入口参数: 无
 0004           ; * 出口参数: 无
 0004           ; /********************************************/
 0004           ; void int2_init() 
 0004           ; {
 0004           ;    DDRD &= ~BIT(2); 
 0004           ;    PORTD|= BIT(2); //设置输出口上拉
 0004                   .dbline 65
 0004           ;    EICRA = 0X20; 
 0004           ;    EIMSK &= ~BIT(2); 
 0004 A801              movw R20,R16
 0006 0AC0              xjmp L5
 0008           L2:
 0008                   .dbline 66
 0008 62E0              ldi R22,2
 000A 70E0              ldi R23,0
 000C 02C0              xjmp L9
 000E           L6:
 000E                   .dbline 66
 000E           L7:
 000E                   .dbline 66
 000E 6150              subi R22,1
 0010 7040              sbci R23,0
 0012           L9:
 0012                   .dbline 66
 0012 6030              cpi R22,0
 0014 6707              cpc R22,R23
 0016 D9F7              brne L6
 0018           X0:
 0018           L3:
 0018                   .dbline 65
 0018 4150              subi R20,1
 001A 5040              sbci R21,0
 001C           L5:
 001C                   .dbline 65
 001C 4030              cpi R20,0
 001E 4507              cpc R20,R21
 0020 99F7              brne L2
 0022           X1:
 0022                   .dbline -2
 0022           L1:
 0022 0E940000          xcall pop_gset2
 0026                   .dbline 0 ; func end
 0026 0895              ret
 0028                   .dbsym r i 20 i
 0028                   .dbsym r j 22 i
 0028                   .dbsym r t 16 i
 0028                   .dbend
 0028                   .dbfunc e delay_ms _delay_ms fV
 0028           ;              i -> R20,R21
 0028           ;              j -> R22,R23
 0028           ;              t -> R16,R17
                        .even
 0028           _delay_ms::
 0028 0E940000          xcall push_gset2
 002C                   .dbline -1
 002C                   .dbline 77
 002C           ; }
 002C           ; 
 002C           ; /*******************************************
 002C           ; * 函数名称: timer0_init()
 002C           ; * 函数功能: 定时器0初始化  配置输出40khz占空比50%的方波
 002C           ; * 入口参数: 无
 002C           ; * 出口参数: 无
 002C           ; /********************************************/
 002C           ; void timer0_init()
 002C           ; {
 002C           ;    DDRB &= ~BIT(PB4);
 002C           ;    ASSR &= ~BIT(3);
 002C                   .dbline 79
 002C           ;    TCCR0 = 0X19;
 002C           ;    OCR0 = 0Xc7;//经示波器测试产生39.92kHZ的正弦方波
 002C A801              movw R20,R16
 002E 0AC0              xjmp L14
 0030           L11:

⌨️ 快捷键说明

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