找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2884|回复: 0
打印 上一主题 下一主题
收起左侧

超声波报警系统+51单片机+keil+汇编语言程序详细注释

[复制链接]
跳转到指定楼层
楼主
4个超声波,在显示里由abcd代替,设置里调整报警临界值,离得越近报警速度越快



程序如下
TXQ        EQU        P1.0                ;超声波接口
RXQ        EQU P1.1
TXH        EQU        P1.2
RXH        EQU P1.3
TXZ        EQU P1.4
RXZ        EQU P1.5
TXY        EQU P1.6
RXY        EQU P1.7

FRON EQU P2.4
BEHD EQU P2.5
LEFT EQU P2.6
RIGT EQU P2.7

KSET        EQU P3.0        ;按键接口
KADD        EQU P3.1
KSUB        EQU P3.2
FMQ                EQU P3.7

SCAN        EQU 30H                ;显示位控变量
SETH        EQU 31H                ;门限百位
SETM        EQU 32H                ;门限十位
SETL        EQU 33H                ;门限个位
DIS_NO        EQU 34H                ;超声波编号
CNT                EQU 35H                ;中断计数
DIS_NUM        EQU 36H                ;显示区编号(对应超声波编号)
DIS_CNT        EQU 37H                ;用于控制显示切换速度
TMP_H        EQU 38H                ;测时距离暂存高
TMP_M        EQU 39H                ;测时距离暂存中
TMP_L        EQU 3AH                ;测时距离暂存低
TMP_HO        EQU 3BH                ;比较时距离高
TMP_MO        EQU 3CH                ;比较时距离中
TMP_LO        EQU 3DH                ;比较时距离低
BEEP_F        EQU 3EH                ;响声频次,越大频率越低
BEEP_C        EQU 3FH                ;响声计数
DISBUF        EQU 40H                ;显示缓冲区
POS_NUM        EQU 50H                ;设置位置
        
DOT                BIT 00H                ;有无小数点
FLAG        BIT 01H                ;溢出标志
TFLAG        BIT 02H                ;200ms时间标志
SETFLAG        BIT 03H                ;设置状态标志
ALMFLAG        BIT 04H                ;报警标志
FLASH        BIT 05H                ;闪烁状态
FLASHH        BIT 06H                ;1=高位闪烁
FLASHM        BIT 07H                ;1=中位闪烁
FLASHL        BIT 08H                ;1=低位闪烁
;-------------------------------------------------------
        ORG 0000H
        LJMP MAIN
        ORG 000BH
        LJMP T0ISR
        ORG 001BH
        LJMP T1ISR
        ORG 0030H
;-------------------------------------------------------
MAIN:
        MOV TMOD,#11H        ;定时器设置为模式1
        MOV TH0,#0
        MOV TL0,#0
        MOV TH1,#0F0H        ;4毫秒定时
        MOV TL1,#60H
        SETB ET0                ;开定时器0中断
        SETB ET1                ;开定时器1中断
        SETB TR1                ;启动定时器1
        SETB EA                        ;开总中断
        MOV SETH,#1                ;缺省门限150cm
        MOV SETM,#5
        MOV SETL,#0
        
        MOV SCAN,#0                ;初始化一些变量
        MOV CNT,#0
        MOV DIS_NO,#0
        CLR TFLAG
LOOP:
        LCALL KEYSCAN                ;扫描按键
        JNB TFLAG,LOOP                ;200毫秒定时未到,等待
        JB SETFLAG,LOOP                ;如果是设置状态转LOOP
LOOP1:
        CLR TFLAG                        ;清定时标志
//        LCALL DIST_Q                ;测前方距离
//        LCALL DIST_H                ;测后方距离
//        LCALL DIST_Z                ;测左前距离
//        LCALL DIST_Y                ;测右前距离
        

L1:JB FRON,L2
   LCALL DELAYUS
   JB FRON,L2
   LCALL DIST_Q
L2:JB BEHD,L3
   LCALL DELAYUS
   JB BEHD,L3
   LCALL DIST_H
L3:JB LEFT,L4
   LCALL DELAYUS
   JB LEFT,L4
   LCALL DIST_Z
L4:JB RIGT,LOOP
   LCALL DELAYUS
   JB RIGT,LOOP
   LCALL DIST_Y
   SJMP LOOP
;-------------------------------------------------------
;报警控制
ALARM:
        JB ALMFLAG,ALARM1        ;有报警转报警处理
        SETB FMQ                        ;蜂鸣器置1
        RET
ALARM1:
        INC BEEP_C                        ;计数变量加1
        MOV A,BEEP_C
        CJNE A,BEEP_F,ALARM2        ;与当前距离对应频次数比较
ALARM2:
        JC ALARM3                                ;小于则返回
        MOV BEEP_C,#0                        ;否则清计数变量
        CPL FMQ                                        ;蜂鸣器反向
ALARM3:
        RET
;-------------------------------------------------------
KEYSCAN:
        JB KSET,KSCANA                        ;设置键未按下转
        LCALL DELAY                                ;延时去抖
        JB KSET,KSCANA                        ;再判断一次
        JNB KSET,$                                ;等待按键抬起
        INC POS_NUM                                ;位置变量加1
        MOV A,POS_NUM                        
        MOV B,#4                                ;0到3之间切换
        DIV AB
        MOV POS_NUM,B
        MOV A,B
        CJNE A,#0,KSCANF1
        CLR SETFLAG                                ;位置变量为0,清设置标志,退出
        RET
KSCANF1:
        CJNE A,#1,KSCANF2                ;为1,个位闪烁
        SETB FLASHL
        CLR FLASHM
        CLR FLASHH
        SETB SETFLAG
        RET
KSCANF2:
        CJNE A,#2,KSCANF3                ;为2,十位闪烁
        SETB FLASHM
        CLR FLASHH
        CLR FLASHL
        SETB SETFLAG
        RET
KSCANF3:
        SETB FLASHH                                ;为3,百位闪烁
        CLR FLASHM
        CLR FLASHL
        SETB SETFLAG
        RET
KSCANA:
        JB KADD,KSCANS                        ;加键
        LCALL DELAY
        JB KADD,KSCANS
        JNB KADD,$
        MOV A,POS_NUM
        DEC A
        JNZ KSCANA1
        INC SETL                                ;位置变量为1,个位加1
        MOV A,SETL
        MOV B,#10
        DIV AB
        MOV SETL,B
        RET
KSCANA1:
        DEC A
        JNZ KSCANA2
        INC SETM                                ;位置变量为2,十位加1
        MOV A,SETM
        MOV B,#10
        DIV AB
        MOV SETM,B
        RET
KSCANA2:
        INC SETH                                ;位置变量为3,百位加1
        MOV A,SETH
        MOV B,#3
        DIV AB
        MOV SETH,B
        RET
KSCANS:
        JB KSUB,KSCANR                        ;减键
        LCALL DELAY
        JB KSUB,KSCANR
        JNB KSUB,$
        MOV A,POS_NUM
        DEC A
        JNZ KSCANS1
        DEC SETL                                ;位置变量为1,个位减1
        MOV A,SETL
        JNB ACC.7,KSCANR
        MOV SETL,#9
        RET
KSCANS1:
        DEC A
        JNZ KSCANS2
        DEC SETM                                ;位置变量为2,十位减1
        MOV A,SETM
        JNB ACC.7,KSCANR
        MOV SETM,#9
        RET
KSCANS2:
        DEC SETH                                ;位置变量为3,百位减1
        MOV A,SETH
        JNB ACC.7,KSCANR
        MOV SETH,#2
KSCANR:
        RET
;-------------------------------------------------------
;前方测距
DIST_Q:
        MOV TH0,#0                ;初始值为0
        MOV TL0,#0
        SETB TXQ                ;拉高TXQ
        LCALL DELAYUS        ;延时20us左右
        CLR TXQ                        ;拉低TX
        JNB RXQ,$                ;等待RXQ变高
        SETB TR0                ;启动定时器0
        JB RXQ,$                ;等待RXQ变低
        CLR TR0                        ;关闭定时器0
        MOV DIS_NO,#0        ;超声波编号为0
        LCALL COUNT                ;计算距离
        RET
;-------------------------------------------------------
;后方测距
DIST_H:
        MOV TH0,#0
        MOV TL0,#0
        SETB TXH               
        LCALL DELAYUS
        CLR TXH
        JNB RXH,$                ;等待RXH变高
        SETB TR0
        JB RXH,$                ;等待RXH变低
        CLR TR0
        MOV DIS_NO,#1        ;超声波编号为1
        LCALL COUNT
        RET
;-------------------------------------------------------
;左方测距
DIST_Z:
        MOV TH0,#0
        MOV TL0,#0
        SETB TXZ
        LCALL DELAYUS
        CLR TXZ
        JNB RXZ,$                ;等待RXZ变高
        SETB TR0
        JB RXZ,$                ;等待RXZ变低
        CLR TR0
        MOV DIS_NO,#2        ;超声波编号为2
        LCALL COUNT
        RET
;-------------------------------------------------------
;右方测距
DIST_Y:
        MOV TH0,#0
        MOV TL0,#0
        SETB TXY
        LCALL DELAYUS
        CLR TXY
        JNB RXY,$                ;等待RXY变高
        SETB TR0
        JB RXY,$                ;等待RXY变低
        CLR TR0
        MOV DIS_NO,#3        ;超声波编号为3
        LCALL COUNT
        RET
;-------------------------------------------------------
;延时20us
DELAYUS:
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        RET
;-------------------------------------------------------
;T1中断程序
T1ISR:
        PUSH ACC                ;保护现场
        PUSH B
        PUSH PSW
        PUSH 00H
        CLR TR1
        MOV TH1,#0F0H        ;4ms
        MOV TL1,#60H
        SETB TR1
        INC CNT
        MOV A,CNT
        CJNE A,#50,T1COMP        ;200ms测一次
T1COMP:
        JC T1RE
        MOV CNT,#0
        SETB TFLAG                        ;置时间到标志
        CPL FLASH                        ;闪烁控制取反
        LCALL ALARM                        ;报警控制
//        INC DIS_CNT                        ;变量加1,这个变量控制显示切换速度
//        MOV A,DIS_CNT
//        MOV B,#5                        ;这里为5,也就是1秒切换一次
//        DIV AB                                ;控制显示切换变量/5
//        MOV DIS_CNT,B                ;余数传给控制显示变量
//        MOV A,B                                ;余数传给A
//        JNZ T1RE                        ;余数不为0,则跳转
//        INC DIS_NUM                        ;显示的超声波设备编号+1
//        MOV A,DIS_NUM
//        MOV B,#4
//        DIV AB                                ;超声波编号/4
//        MOV DIS_NUM,B                ;将超声波编号/4的结果的余数传给超声波编号,意在使超声波编号在0~3之间循环
T1RE:
        JB SETFLAG,T1RE1        ;如果是设置状态转
        LCALL DISPLAY                ;非设置状态显示
        SJMP T1RE2
T1RE1:
        LCALL DIS_SET                ;设置状态显示
T1RE2:
        POP 00H                                ;恢复现场
        POP PSW
        POP B
        POP ACC
        RETI
;-------------------------------------------------------
;T0中断程序,表示距离溢出
T0ISR:
        SETB FLAG                        ;溢出
        RETI
;-------------------------------------------------------
COUNT:
        MOV R3,TH0                        ;去定时器结果
        MOV R4,TL0
        MOV R7,#17                        ;乘以17
        LCALL NMUL21
        MOV R7,#100                        ;除以(100*10)得到厘米数
        LCALL NDIV31
        MOV R7,#10
        LCALL NDIV31
;以下处理数据将,标号以及计算结果变为百十个位存入缓冲区
;前:DISBUF+0,DISBUF+1,DISBUF+2,DISBUF+3        
;后:DISBUF+4,DISBUF+5,DISBUF+6,DISBUF+7        
;左:DISBUF+8,DISBUF+9,DISBUF+10,DISBUF+11        
;右:DISBUF+12,DISBUF+13,DISBUF+14,DISBUF+15        
        MOV R0,#DISBUF          ;显示的首地址送R0
        MOV A,DIS_NO          ;把超声波的编号送A
        MOV B,#4                  ;把4送B
        MUL AB                          ;超声波的编号*4
        ADD A,R0                  ;超声波的编号*4的结果的低位+显示数据的首地址,可得出相对应的超声波存放显示数据的首地址
        MOV R0,A                  ;将地址传给R0                                                  
        MOV A,#10                  ;把10送A
        ADD A,DIS_NO          ;每个区段的首位分别是A,B,C,D
        MOV @R0,A                  ;将要显示的首位送到对应地址中
        INC R0                          ;地址+1
;计算结果与700(02BCH)比较,大于它则溢出
        MOV A,R4                  ;将计算结果的低位传给A
        CLR C                          
        SUBB A,#0BCH          ;用  计算结果的低位—700的十六进制数的低位  ,差传给A
        MOV A,R3              ;将计算结果的高位传给A
        SUBB A,#2                  ;用  计算结果的高位—700的十六进制数的高位  ,差传给A
        JNC C_ERR                  ;若cy为0,则表示计算结果大于700,显示"----"
        JB FLAG,C_ERR          ;若溢出标志为1,则显示"----"
;求百十个位并存储在相应位置        
        MOV R7,#10                        ;将10传给R7
        LCALL NDIV31                ;调用除法子程序,计算结果/10
        PUSH 07H                        ;将余数,即计算结果个位数入栈
        MOV R7,#10                        ;
        LCALL NDIV31
        PUSH 07H                    ;将余数,即计算结果十位数入栈
        MOV R7,#10
        LCALL NDIV31
        MOV A,R7                        ;将余数,即计算结果百位数传给A
        MOV @R0,A                        ;百位数传到相应地址
        MOV TMP_H,A                        ;百位数存入暂存地址
        POP ACC                                ;十位数出栈
        INC R0                                ;地址+1
        MOV @R0,A                        ;十位数传到地址
        MOV TMP_M,A                        ;十位数存入暂存地址
        POP ACC                                ;个位数出栈
        INC R0                                ;地址+1
        MOV @R0,A                        ;个位数传到地址
        MOV TMP_L,A                        ;个位数传到暂存地址
        LCALL COMPLIMT        ;报警预处理
        RET
C_ERR:                                ;溢出则显示---
        MOV A,#10H                ;将数字16传给A,代表的是数据表中的"-"
        MOV @R0,A                ;R0为各传感器显示数值的地址
        INC R0
        MOV @R0,A
        INC R0
        MOV @R0,A
        CLR FLAG                ;溢出标志清0
        RET
;-------------------------------------------------------
;取一次测出的四个方向距离的最小值和临界值比较
COMPLIMT:        
        MOV A,DIS_NO                ;送超声波编号到A
        ;JNZ COMPLT1                        ;非前方超声波则跳转
        MOV TMP_HO,TMP_H        ;前方距离送中间变量
        MOV TMP_MO,TMP_M
        MOV TMP_LO,TMP_L
//COMPLT1:                                ;比较变量与四组数据比较求最小值
//        CLR C
//        MOV A,TMP_LO                ;
//        SUBB A,TMP_L                ;比较变量低位-实测距离低位
//        MOV A,TMP_MO
//        SUBB A,TMP_M                ;比较变量中位-实测距离中位-cy
//        MOV A,TMP_HO
//        SUBB A,TMP_H                ;比较变量高位-实测距离高位-cy
//        JC COMPLT2                        ;比较变量>实测距离值,跳转
//        MOV TMP_HO,TMP_H        ;比较变量<实测距离值,实测距离值->比较值
//        MOV TMP_MO,TMP_M
//        MOV TMP_LO,TMP_L
//COMPLT2:
//        MOV A,DIS_NO                ;将超声波编号传给A
//        CJNE A,#3,COMPLT3        ;编号<3,cy=1,往下执行。 若编号=3,cy=0,跳转
COMPLT3:                                ;到最后一组数据,那么比较变量与临界值比较
        ;JC COMPLTR                        ;cy=1,即编号<3,跳转
        CLR C
        MOV A,TMP_LO               
        SUBB A,SETL                        ;比较变量低位-临界值低位-cy
        MOV A,TMP_MO
        SUBB A,SETM                        ;比较变量中位-临界值中位-cy
        MOV A,TMP_HO
        SUBB A,SETH                        ;比较变量高位-临界值高位-cy
        JNC COMPLT4                        ;若cy=0,跳转
        SETB ALMFLAG                ;若cy=1,即比较变量<临界值,即测得的距离<临界值,置位报警标志
        LCALL GET_DAT                ;根据距离大小求报警声音长短
        RET
COMPLT4:
        CLR ALMFLAG                        ;复位报警标志
COMPLTR:
        RET
;-------------------------------------------------------
;计算报警声音时长(高位*100+中位*10+低位)/20
GET_DAT:
        MOV A,TMP_MO                ;比较变量中位传给A
        MOV B,#10                        ;把10传给B
        MUL AB                                ;比较变量中位*10,A存结果低位,B存高位
        ADD A,TMP_LO                ;(比较变量中位*10)结果的低位+比较变量低位
        MOV R4,A                        ;[(比较变量中位*10)结果的低位+比较变量低位]的结果存入R4
        MOV A,TMP_HO                ;比较变量高位传给A
        MOV B,#100                        ;把100传给B
        MUL AB                                ;比较变量高位*100,A存结果低位,B存高位
        ADD A,R4                        ;(比较变量高位*100)结果的低位+R4
        MOV R4,A                        ;[(比较变量高位*100)结果的低位+R4]的结果存入R4
        MOV A,B                                ;(比较变量高位*100)结果的高位传给A
        ADDC A,#0                        ;A+cy+0
        MOV R3,A                        ;A->R3
        MOV R2,#0
        MOV R7,#20                        ;距离除以20得声音长度值
        LCALL NDIV31                ;调用除法子程序,商为R3R4,余数为R7
        MOV A,R4                        ;将商的低位传给A
        JNZ GET_DAT1                ;商的低位不等于0,则跳转
        MOV A,#1                        ;商的低位=0,送1到A
GET_DAT1:
        MOV BEEP_F,A                ;把商的低位或者1传给蜂鸣器响声频次
        RET
;-------------------------------------------------------
;(R3R4*R7)=(R2R3R4)
NMUL21:
        MOV A,R4                ;时间低位传给A
        MOV B,R7                ;乘数R7传给B
        MUL AB                        ;时间低位*R7,结果的低位为A,高位为B
        MOV R4,A                ;时间低位*R7的结果的低位存入R4,即为最终结果的低位
        MOV A,B                        ;时间低位*R7的结果的高位传给A
        XCH A,R3                ;(时间低位*R7的结果的高位)与时间的高位交换
        MOV B,R7                ;乘数传给B
        MUL AB                        ;时间高位*R7,结果的低位为A,高位为B
        ADD A,R3                ;时间高位*R7结果的低位 + 时间低位*R7的结果的高位
        MOV R3,A                ;将(时间高位*R7结果的低位 + 时间低位*R7的结果的高位)的结果传给R3
        CLR A                        ;将A清0
        ADDC A,B                ;时间高位*R7的结果的高位 + cy
        MOV R2,A                ;(时间高位*R7的结果的高位 + cy)->R2
        CLR OV
        RET
;-----------------------------------        
;三字节无符号除法程序(R2R3R4/R7)=(R2)R3R4 余数R7
NDIV31:
        MOV A,R2                ;时间*17结果的高位传给A
        MOV B,R7                ;将被除数传给B
        DIV AB                        ;高位/17,商放A,余数放B
        PUSH ACC                ;将商入栈
        MOV R2,B                ;将余数重新传给B
        MOV B,#10H                ;把16传给B
NDV311:
        CLR C                        ;CY清0
        MOV A,R4                ;低位R4传给A
        RLC A                        ;左移A(R4)
        MOV R4,A                ;将A传给R4
        MOV A,R3                ;中位R3传给A
        RLC A                        ;左移A(R3)
        MOV R3,A                ;将A传给R3
        MOV A,R2                ;高位R2传给A
        RLC A                        ;左移A(R2)
        MOV R2,A                ;将A传给R2
        MOV F0,C                ;将CY的值传给F0
        CLR C                        ;CY清0
        SUBB A,R7                ;A(R2)-R7
        JB F0,NDV312
        JC NDV313
NDV312:
        MOV R2,A
        INC R4
NDV313:
        DJNZ B,NDV311
        POP ACC
        CLR OV
        JZ NDV314
        SETB OV
NDV314:
        XCH A,R2
        MOV R7,A
RET
;-------------------------------------------------------
DIS_SET:                                ;设置状态显示控制(显示设置值大小)
        MOV A,SCAN
        JNZ DIS_SET1
        MOV P2,#0F1H                        ;第一位显示
        MOV A,#16
        CLR DOT
        SJMP SET_DIS
DIS_SET1:
        DEC A
        JNZ DIS_SET2
        MOV P2,#0F2H                        ;第二位显示
        MOV A,SETH
        JNB FLASH,DIS_SET11        ;不闪烁转
        JNB FLASHH,DIS_SET11        ;本位不闪烁转
        MOV A,#17                        ;否则本位熄灭
DIS_SET11:
        SETB DOT
        SJMP SET_DIS
DIS_SET2:
        DEC A
        JNZ DIS_SET3
        MOV P2,#0F4H
        MOV A,SETM
        JNB FLASH,DIS_SET21
        JNB FLASHM,DIS_SET21
        MOV A,#17
DIS_SET21:
        CLR DOT
        SJMP SET_DIS
DIS_SET3:
        MOV P2,#0F8H
        MOV A,SETL
        JNB FLASH,DIS_SET31
        JNB FLASHL,DIS_SET31
        MOV A,#17
DIS_SET31:
        CLR DOT
SET_DIS:
        MOV DPTR,#LEDTAB        ;段码首地址
        MOVC A,@A+DPTR                ;查表
        JNB DOT,SET_DIS1        ;不加小数点的跳转
        ANL A,#7FH
SET_DIS1:
        MOV P0,A
        INC SCAN
        MOV A,SCAN
        MOV B,#4                        ;共4位
        DIV AB
        MOV SCAN,B
        RET
;-------------------------------------------------------
DISPLAY:                                ;正常状态显示(显示距离)
        MOV A,SCAN
        JNZ DIS01                        ;显示位控为0,顺序执行,不为0,跳转
        MOV P2,#0F1H                        ;点亮第一位数码管
        CLR DOT                                ;小数点标志置0
        SJMP DISP                        ;跳转显示数据
DIS01:
        DEC A
        JNZ DIS02
        MOV P2,#0F2H
        SETB DOT
        SJMP DISP
DIS02:
        DEC A
        JNZ DIS03
        MOV P2,#0F4H
        CLR DOT
        SJMP DISP
DIS03:
        MOV P2,#0F8H
        CLR DOT
DISP:
        MOV DPTR,#LEDTAB
        MOV R0,#DISBUF                  ;显示首地址传给R0
        MOV A,DIS_NO                  ;对应超声波编号的显示区编号->A
        MOV B,#4                          ;传4给B
        MUL AB                                  ;显示区编号*4,A存低位,B存高位
        ADD A,R0                          ;首地址 + (显示区编号*4结果的低位)
        ADD A,SCAN                          ;[首地址 + (显示区编号*4结果的低位)]+显示位控变量
        MOV R0,A                          ;将对应的超声波的某位显示数据的地址传给R0
        MOV A,@R0                          ;将对应地址的值传给A
        MOVC A,@A+DPTR              ;查表
        JNB DOT,DISP1                  ;判断是否输出小数点
        ANL A,#7FH                          ;需要输出小数点,将小数点对应的管脚置0
DISP1:
        MOV P0,A                          ;将查表结果从P0口输出
        INC SCAN                          ;显示位控+1
        MOV A,SCAN                          ;显示位控传给A
        CJNE A,#4,DISP2                  ;显示位控!=4且<4,跳转,cy=1
DISP2:
        JC DISRE                          ;cy=1跳转
        MOV SCAN,#0                          ;显示位控=0
DISRE:
        RET
;-------------------------------------------------------
DELAY:
        MOV R2,#20
DLY:
        MOV R3,#249
        DJNZ R3,$
        DJNZ R2,DLY
        RET
;-------------------------------------------------------
LEDTAB:
        DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0BFH,0FFH
        END

文件打包如下:
超声波报警.rar (112.41 KB, 下载次数: 49)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表