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

📄 cscj_timer1.lis

📁 一个超声波测距的东西
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0030                   .dbline 80
 0030 60EF              ldi R22,2800
 0032 7AE0              ldi R23,10
 0034 02C0              xjmp L18
 0036           L15:
 0036                   .dbline 80
 0036           L16:
 0036                   .dbline 80
 0036 6150              subi R22,1
 0038 7040              sbci R23,0
 003A           L18:
 003A                   .dbline 80
 003A 6030              cpi R22,0
 003C 6707              cpc R22,R23
 003E D9F7              brne L15
 0040           X2:
 0040           L12:
 0040                   .dbline 79
 0040 4150              subi R20,1
 0042 5040              sbci R21,0
 0044           L14:
 0044                   .dbline 79
 0044 4030              cpi R20,0
 0046 4507              cpc R20,R21
 0048 99F7              brne L11
 004A           X3:
 004A                   .dbline -2
 004A           L10:
 004A 0E940000          xcall pop_gset2
 004E                   .dbline 0 ; func end
 004E 0895              ret
 0050                   .dbsym r i 20 i
 0050                   .dbsym r j 22 i
 0050                   .dbsym r t 16 i
 0050                   .dbend
 0050                   .dbfunc e Sendbyte _Sendbyte fV
 0050           ;              i -> R20
 0050           ;           data -> R22
                        .even
 0050           _Sendbyte::
 0050 0E940000          xcall push_gset2
 0054 602F              mov R22,R16
 0056                   .dbline -1
 0056                   .dbline 91
 0056           ; }
 0056           ; 
 0056           ; /*******************************************
 0056           ; * 函数名称: timer1_init()
 0056           ; * 函数功能: 定时器1初始化 用于测量距离
 0056           ; * 入口参数: 无
 0056           ; * 出口参数: 无
 0056           ; /********************************************/
 0056           ; void timer1_init()
 0056           ; {
 0056           ;     TCCR1B = 0X01;// 设置分频数为1,16MHZ  
 0056           ;       TCNT1H = 0xFF;// 设置计数初值, 每10微秒进入定时器中断处理子函数 使time_counter加1
 0056                   .dbline 92
 0056           ;     TCNT1L = 0x60;//
 0056 4427              clr R20
 0058                   .dbline 93
 0058           ;       TIMSK &= ~BIT(2);//关闭溢出中断
 0058                   .dbline 94
 0058           ; }
 0058 08E0              ldi R16,8
 005A 10E0              ldi R17,0
 005C D1DF              xcall _delay_us
 005E                   .dbline 95
 005E           ; 
 005E 17C0              xjmp L23
 0060           L20:
 0060                   .dbline 96
 0060           ; /**************************************************************
 0060                   .dbline 97
 0060           ; * 函数名称:calculate_distance()
 0060 67FF              sbrs R22,7
 0062 04C0              rjmp L24
 0064                   .dbline 98
 0064           ; * 函数功能:计算距离
 0064 8BB3              in R24,0x1b
 0066 8260              ori R24,2
 0068 8BBB              out 0x1b,R24
 006A 03C0              xjmp L25
 006C           L24:
 006C                   .dbline 100
 006C           ; * 入口参数:无
 006C           ; * 出口参数:无
 006C 8BB3              in R24,0x1b
 006E 8D7F              andi R24,253
 0070 8BBB              out 0x1b,R24
 0072           L25:
 0072                   .dbline 101
 0072 8BB3              in R24,0x1b
 0074 8460              ori R24,4
 0076 8BBB              out 0x1b,R24
 0078                   .dbline 102
 0078 08E0              ldi R16,8
 007A 10E0              ldi R17,0
 007C C1DF              xcall _delay_us
 007E                   .dbline 103
 007E 660F              lsl R22
 0080                   .dbline 104
 0080 8BB3              in R24,0x1b
 0082 8B7F              andi R24,251
 0084 8BBB              out 0x1b,R24
 0086                   .dbline 105
 0086 08E0              ldi R16,8
 0088 10E0              ldi R17,0
 008A BADF              xcall _delay_us
 008C                   .dbline 106
 008C           L21:
 008C                   .dbline 95
 008C 4395              inc R20
 008E           L23:
 008E                   .dbline 95
 008E 4830              cpi R20,8
 0090 38F3              brlo L20
 0092                   .dbline -2
 0092           L19:
 0092 0E940000          xcall pop_gset2
 0096                   .dbline 0 ; func end
 0096 0895              ret
 0098                   .dbsym r i 20 c
 0098                   .dbsym r data 22 c
 0098                   .dbend
 0098                   .dbfunc e Receivebyte _Receivebyte fc
 0098           ;          temp2 -> R16
 0098           ;          temp1 -> R18
 0098           ;              i -> R20
                        .even
 0098           _Receivebyte::
 0098 0E940000          xcall push_gset1
 009C                   .dbline -1
 009C                   .dbline 117
 009C           ; **************************************************************/
 009C           ; float calculate_distance(uint time)
 009C           ; {
 009C           ;     float value;    
 009C           ;       value = time*0.17;//time的单位为10us,S=(T*time/2),单位:cm
 009C           ;       return value;//返回距离值       
 009C           ; }
 009C           ; 
 009C           ; void main()
 009C           ; {  
 009C           ;    CLI();
 009C           ;    DDRA = 0XFF;
 009C           ;    int2_init();
 009C           ;    timer1_init();
 009C           ;    timer0_init();
 009C           ;    Init_12864(); //液晶初始化
 009C           ;    LcmClearTXT();//液晶清屏
 009C                   .dbline 119
 009C           ;    Display_x_y_data(0,0,"距离:");//液晶显示
 009C           ;    Display_x_y_data(0,7,"CM");//液晶显示      
 009C 0027              clr R16
 009E 2227              clr R18
 00A0                   .dbline 120
 00A0           ;    SEI();
 00A0 4427              clr R20
 00A2 10C0              xjmp L30
 00A4           L27:
 00A4                   .dbline 121
 00A4           ;    DDRB |= BIT(PB4);
 00A4                   .dbline 122
 00A4           ;    TIMSK |= BIT(2);
 00A4 220F              lsl R18
 00A6                   .dbline 123
 00A6           ;    delay_us(200);//设定测量下限为3CM
 00A6 8BB3              in R24,0x1b
 00A8 8B7F              andi R24,251
 00AA 8BBB              out 0x1b,R24
 00AC                   .dbline 124
 00AC           ;    EIMSK |= BIT(2);
 00AC 8BB3              in R24,0x1b
 00AE 8460              ori R24,4
 00B0 8BBB              out 0x1b,R24
 00B2                   .dbline 125
 00B2           ;    while(1)
 00B2 8BB3              in R24,0x1b
 00B4 8B7F              andi R24,251
 00B6 8BBB              out 0x1b,R24
 00B8                   .dbline 126
 00B8           ;    {
 00B8 8BB3              in R24,0x1b
 00BA 8695              lsr R24
 00BC 8170              andi R24,1
 00BE 09F0              breq L31
 00C0                   .dbline 126
 00C0 2395              inc R18
 00C2           L31:
 00C2                   .dbline 127
 00C2           L28:
 00C2                   .dbline 120
 00C2 4395              inc R20
 00C4           L30:
 00C4                   .dbline 120
 00C4 4830              cpi R20,8
 00C6 70F3              brlo L27
 00C8                   .dbline 128
 00C8           ;       if(flag == 1)
 00C8           ;         {
 00C8 4427              clr R20
 00CA 10C0              xjmp L36
 00CC           L33:
 00CC                   .dbline 129
 00CC           ;           //收到返回超声波,清除标志位
 00CC                   .dbline 130
 00CC           ;           flag = 0;                   
 00CC 000F              lsl R16
 00CE                   .dbline 131
 00CE           ;               //计算距

⌨️ 快捷键说明

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