标题:
俄罗斯方块程序
[打印本页]
作者:
daniu
时间:
2014-12-27 14:54
标题:
俄罗斯方块程序
前天把 8*8俄罗斯方块程序搞定,今天把俄罗斯方块硬件电路部分搞定。从刚开始没一点思路,到项目全部完成。这几天花费了不少睡觉时间,学了不少东西,两个字:值得。
前天也不知道怎么的,调程序的效率真高,自己都不相信自己了,不到一个小时解决了左右冲突、背景合成、积木旋转、加速下移这些问题。而且在背景合成、积木旋转着两个算法上有自己独有的方法。都比较精简。
搞完了俄罗斯方块,学的东西还真不少啊。
接下来就要准备16*16的俄罗斯方块了,还要制作一个小制作下个星期三要交,还要准备讲课比赛,后天还要考单片机,星期六考英语四级。接下来的几天还真忙啊,也不知道又要加班加到凌晨2点了,昨晚搞到3点现在还没回过神来。累是累了点,不过充实的很啊。
项目阶段,又要抓紧了,做几个得意的东西来,留着做纪念。
;功能:俄罗斯方块游戏
;P3口实现对LED点阵的动态片选功能
;===============================================================
;=======================开始初始化==============================
HANG1 EQU 40H ;第一行数据地址
HANG2 EQU 41H ;第二行数据地址
HANG3 EQU 42H ;第三行数据地址
HANG4 EQU 43H ;第四行数据地址
HANG5 EQU 44H ;第五行数据地址
HANG6 EQU 45H ;第六行数据地址
HANG7 EQU 46H ;第七行数据地址
HANG8 EQU 47H ;第八行数据地址
BEIJING1 EQU 48H ;背景第一行数据地址
BEIJING2 EQU 49H ;背景第二行数据地址
BEIJING3 EQU 4AH ;背景第三行数据地址
BEIJING4 EQU 4BH ;背景第四行数据地址
BEIJING5 EQU 4CH ;背景第五行数据地址
BEIJING6 EQU 4DH ;背景第六行数据地址
BEIJING7 EQU 4EH ;背景第七行数据地址
BEIJING8 EQU 4FH ;背景第八行数据地址
SHU1 EQU 50H ;保存第一行显示初值地址
SHU2 EQU 51H ;保存第二行显示初值地址
SHU3 EQU 52H ;保存第三行显示初值地址
XIASHU EQU 53H ;下移数据中转地址
Y_Y EQU 54H ;异地旋转下移Y轴数据地址
X_X EQU 55H ;异地旋转左、右移X轴数据地址
CHENG1 EQU 56H ;第一行显示数据保存地址
CHENG2 EQU 57H ;第二行显示数据保存地址
CHENG3 EQU 58H ;第三行显示数据保存地址
CHENG4 EQU 59H ;第四行显示数据保存地址
CHENG5 EQU 5AH ;第五行显示数据保存地址
CHENG6 EQU 5BH ;第六行显示数据保存地址
CHENG7 EQU 5CH ;第七行显示数据保存地址
CHENG8 EQU 5DH ;第八行显示数据保存地址
XUAN1 EQU 20H ;第一行寻址旋转
XUAN2 EQU 21H ;第二行寻址旋转
XUAN3 EQU 22H ;第三行寻址旋转
OXUAN EQU 23H ;用来存取旋转溢出数据
SHUCHU EQU P2 ;定义P0口为输出口
PIANXUAN EQU P3 ;定义P2口为片选口
BT BIT 24H.0 ;节拍法标志位
ANJIAN1 BIT 24H.1 ;异地旋转按键标志位
ANJIAN2 BIT 24H.2 ;左移按键标志位
ANJIAN3 BIT 24H.3 ;右移按键标志位
CHONG BIT 24H.4 ;背景冲突按键标志位
;=========================系统程序==============================
ORG 00H ;程序开始
LJMP START ;跳到START
ORG 0BH ;中断定时器0入口地址
LJMP T0_1 ;跳到定时器0服务程序
ORG 30H ;入口地址
START:MOV SP,#70H ;移开指针
LCALL INIT ;开定时器、开定时器中断
SETB BT ;中断标志位置一
CLR ANJIAN1 ;异地旋转按键标志位清0
CLR ANJIAN2 ;左移按键标志位清0
CLR ANJIAN3 ;右移按键标志位清0
CLR CHONG ;冲突标志位清0
LCALL CHUZHI ;设置移动区初值
LCALL CHUZHI1 ;设置背景区初值
CALL SHUJU1 ;保存显示数据
MOV Y_Y,#00 ;Y轴清0
MOV X_X,#00 ;X轴清0
MOV R2,#0
MOV R3,#0
;========================主程序=================================
MAIN:JNB BT,[ DISCUZ_CODE_1 ]nbsp; ;等待中断
CLR BT ;中断标志位清0
LCALL DISPLAY ;移动区显示
LCALL DISPLAY1 ;背景区显示
CALL PANANJIAN ;按键判断(异地旋转、左移、右移、加速下移)
INC R3 ;等待1S时间到来
CJNE R3,#50,MAIN
MOV R3,#0
CALL SHUJU5 ;保存下移前数据到CHENG1-CHENG8中。
LCALL XIABIANJIE ;判断下移边界,是否下移
CALL CHONGTU ;判断是否有冲突
JNB CHONG,MAIN ;没有冲突返回,
CALL SHUJU6 ;有冲突则取回下移前数据
CALL HEBEIJING ;调用背景合成(背景合成、消行判断及消行、产生随机数)
JMP MAIN
;=====================按键判断子程序============================
;输入:P1.0、P1.1、P1.2、P1.3
;输出:无
;实现的功能:判断左移、右移、异地旋转、加速下移按键是否按下,影响标志位ANJIAN1、ANJIAN2、ANJIAN3.
;===============================================================
PANANJIAN:JB P1.0,TAIQI1 ;没有按键按下继续判断,有按键按下则往下执行
JB ANJIAN1,TAIQI1 ;ANJIAN1=1,继续判断,消抖作用
SETB ANJIAN1 ;异地旋转标志位置一
CALL SHUJU5
CLR C
CALL YIDIXUANZHUAN ;有键按下则旋转。
CALL CHONGTU
JNB CHONG,JIXU3
CALL SHUJU6
JMP TAIQI1
JIXU3:JNC TAIQI1
CALL SHUJU6
TAIQI1:JNB P1.0,PANZUO ;没键按下判断下一个按键是否按下
CLR ANJIAN1 ;异地旋转标志位1清0
PANZUO:JB P1.1,TAIQI2
JB ANJIAN2,TAIQI2
SETB ANJIAN2
CALL SHUJU5
CALL PANZUOYI ;调用判断左移字程序(左移是否碰壁、是否到达边界、是否与背景冲突)
TAIQI2:JNB P1.1,PANYOU
OUT2:CLR ANJIAN2
PANYOU:JB P1.2,TAIQI3
JB ANJIAN3,TAIQI3
SETB ANJIAN3
CALL PANYOUYI ;调用判断右移字程序(右移是否碰壁、是否到达边界、是否与背景冲突)
TAIQI3:JNB P1.2,PANSU
OUT1:CLR ANJIAN3
PANSU:JB P1.3, OUT ;判断加速按键是否按下
CALL JIASU ;加速按键按下则图形加速下移(下移是否触底、是否与背景冲突)
OUT:RET
;=====================加速下移子程序============================
;输入:无
;输出:无
;实现的功能:实现图形加速下移
;===============================================================
JIASU:CALL SHUJU5
MOV R6,#10
DJNZ R6,$
CALL XIABIANJIE
CALL CHONGTU
JNB CHONG,OUT
CALL SHUJU6
CALL HEBEIJING
RET
;==================背景合成及随机数子程序=======================
;输入:无
;输出:无
;实现的功能:实现背景合成、消行、产生随机数
;===============================================================
HEBEIJING:CALL HECHENG
CALL XIAOHANG
CALL QINGLING
CALL SUIJI
LCALL SHUJU4
LCALL SHUJU2
MOV Y_Y,#00
MOV X_X,#00
RET
;==================左移边界判断子程序===========================
;输入:无
;输出:无
;实现的功能:判断左移进位是否为1
;===============================================================
PANZUOYI:MOV R0,#HANG1 ;判断左移边界
CC:MOV A,@R0
RLC A
JC OUT2
INC R0
CJNE R0,#BEIJING1,CC
CALL SHUJU5
CALL ZUOYI
INC X_X
CALL CHONGTU
JB CHONG,TT
RET
TT:CALL SHUJU6
RET
;==================右移边界判断子程序===========================
;输入:无
;输出:无
;实现的功能:判断右移进位是否为1
;===============================================================
PANYOUYI:MOV R0,#HANG1 ;判断右移边界
CCC:MOV A,@R0
RRC A
JC OUT1
INC R0
CJNE R0,#BEIJING1,CCC
CALL SHUJU5
CALL YOUYI
DEC X_X
CALL CHONGTU
JB CHONG,EE
RET
EE:CALL SHUJU6
RET
;==================判断下移边界子程序===========================
;输入:无
;输出:无
;实现的功能:判断43H-47H内容是否为0
;===============================================================
XIABIANJIE:MOV R0,#HANG8
CJNE @R0,#00,HE
CALL XIAYI
INC Y_Y ;下移Y轴加一
RET
HE:CALL HEBEIJING
JMP MAIN
RET
;=======================下移子程序=============================
;输入:无
;输出:无
;实现的功能:实现定图形下移功能
;===============================================================
XIAYI:MOV XIASHU,HANG8
MOV HANG8,HANG7
MOV HANG7,HANG6
MOV HANG6,HANG5
MOV HANG5,HANG4
MOV HANG4,HANG3
MOV HANG3,HANG2
MOV HANG2,HANG1
MOV HANG1,XIASHU
RET
;======================消行子程序===============================
;输入:无
;输出:无
;实现的功能:把合成后背景区中全亮的行消除掉。
;===============================================================
XIAOHANG:MOV R5,#00
MOV R0,#BEIJING8
LAN6:MOV A,@R0
CPL A
JZ XIAOCHU
DEC R0
INC R5
CJNE R0,#47H,LAN6
RET
XIAOCHU:MOV @R0,#00 ;消除该行
X_H:MOV A,R0
MOV R1,A
DEC R1
MOV A,@R1
MOV @R0,A ;把上一行的数据放到下一行
DEC R0
CJNE R0,#48H,X_H ;继续下移
CJNE R5,#07,XIAOHANG ;看是否还有行没有消除掉,有的话继续判断,达到全部消除。
RET
;=====================背景合成子程序============================
;输入:无
;输出:无
;实现的功能:把背景区和移动区合成背景区
;===============================================================
HECHENG:MOV R0,#HANG8
MOV R1,#BEIJING8
LAN4:CJNE R0,#3FH,LAN5
JMP YY
LAN5:MOV A,@R1
ORL A,@R0
MOV @R1,A
DEC R0
DEC R1
JMP LAN4
YY:RET
;======================判断冲突子程序===========================
;输入:无
;输出:无
;实现的功能:判断背景区与移动区是否重叠,影响标志位CHONG。
;===============================================================
CHONGTU:MOV R0,#HANG1
MOV R1,#BEIJING1
LAN:MOV A,@R0
ANL A,@R1
JZ LAN1
SETB CHONG
RET
LAN1:INC R0
INC R1
CJNE R0,#BEIJING1,LAN
MOV A, BEIJING1
ANL A,HANG1
CJNE A,#00,LAN
MOV A, BEIJING2
ANL A,HANG2
CJNE A,#00,LAN
MOV A, BEIJING3
ANL A,HANG3
CJNE A,#00,LAN
MOV A, BEIJING4
ANL A,HANG4
CJNE A,#00,LAN
MOV A, BEIJING5
ANL A,HANG5
CJNE A,#00,LAN
MOV A, BEIJING6
ANL A,HANG6
CJNE A,#00,LAN
MOV A, BEIJING7
ANL A,HANG7
CJNE A,#00,LAN
MOV A, BEIJING8
ANL A,HANG8
CJNE A,#00,LAN
CLR CHONG
RET
;=======================左移子程序==============================
;输入:无
;输出:无
;实现的功能:实现定图形左移功能
;===============================================================
ZUOYI:MOV A,HANG1
RL A
MOV HANG1,A
MOV A,HANG2
RL A
MOV HANG2,A
MOV A,HANG3
RL A
MOV HANG3,A
MOV A,HANG4
RL A
MOV HANG4,A
MOV A,HANG5
RL A
MOV HANG5,A
MOV A,HANG6
RL A
MOV HANG6,A
MOV A,HANG7
RL A
MOV HANG7,A
MOV A,HANG8
RL A
MOV HANG8,A
RET
;========================右移子程序=============================
;输入:无
;输出:无
;实现的功能:实现图形右移功能
;===============================================================
YOUYI:MOV A,HANG1
RR A
MOV HANG1,A
MOV A,HANG2
RR A
MOV HANG2,A
MOV A,HANG3
RR A
MOV HANG3,A
MOV A,HANG4
RR A
MOV HANG4,A
MOV A,HANG5
RR A
MOV HANG5,A
MOV A,HANG6
RR A
MOV HANG6,A
MOV A,HANG7
RR A
MOV HANG7,A
MOV A,HANG8
RR A
MOV HANG8,A
RET
;===================异地旋转子程序==============================
;输入:
;输出:
;实现的功能:如果SHIJIAN=1就旋转,等于0不旋转。讲HANG1-HANG8的内容,
;送到旋转区进行旋转,同时将HANG线的数据进行保存。
;===============================================================
YIDIXUANZHUAN:CALL QINGLING
CALL SHUJU3
LCALL JISUAN
CALL SHUJU2
CALL TIHUAN
RET
;=====================数据替换子程序============================
;输入:
;输出:
;实现的功能:把图形当前数据替换成旋转后的数据。
;===============================================================
TIHUAN:MOV R1,X_X
JIXU1:CJNE R1,#00,BIANHUA1
JMP BIANHUA2
BIANHUA1:MOV A,XUAN1
RL A
MOV XUAN1,A
MOV A,XUAN2
RL A
MOV XUAN2,A
MOV A,XUAN3
RL A
MOV XUAN3,A
DEC R1
JMP JIXU1
BIANHUA2:MOV A,#HANG1
ADD A,Y_Y
MOV R1,A
MOV @R1,XUAN1
MOV A,#HANG2
ADD A,Y_Y
MOV R1,A
MOV @R1,XUAN2
MOV A,#HANG3
ADD A,Y_Y
MOV R1,A
MOV @R1,XUAN3
RET
;========================计算子程序=============================
;输入:
;输出:
;实现的功能:实现数据进行旋转,实现图形旋转功能。
;===============================================================
JISUAN:MOV C,XUAN3.0 ;将3存起来、外旋转
MOV OXUAN.0,C
MOV C,XUAN1.0
MOV XUAN3.0,C
MOV C,XUAN1.2
MOV XUAN1.0,C
MOV C,XUAN3.2
MOV XUAN1.2,C
MOV C,OXUAN.0
MOV XUAN3.2,C
MOV C,XUAN2.0 ;将2存起来、内旋转
MOV OXUAN.1,C
MOV C,XUAN1.1
MOV XUAN2.0,C
MOV C,XUAN2.2
MOV XUAN1.1,C
MOV C,XUAN3.1
MOV XUAN2.2,C
MOV C,OXUAN.1
MOV XUAN3.1,C
RET
;====================产生随机数子程序===========================
;输入:无
;输出:无
;实现的功能:DPH中的数据转化为积木图形数据。
;===============================================================
SUIJI:MOV A,TH0
ANL A,#07H
RL A
MOV DPTR,#TAB
JMP @A+DPTR
TAB:AJMP SUB0
AJMP SUB1
AJMP SUB2
AJMP SUB3
AJMP SUB4
AJMP SUB5
AJMP SUB6
AJMP SUB7
AJMP SUB8
SUB0:MOV XUAN1,#07H
MOV XUAN2,#01H
MOV XUAN3,#00H
RET
SUB1:MOV XUAN1,#02H
MOV XUAN2,#03H
MOV XUAN3,#01H
RET
SUB2:
MOV XUAN1,#02H
MOV XUAN2,#03H
MOV XUAN3,#02H
RET
SUB3:MOV XUAN1,#00H
MOV XUAN2,#07H
MOV XUAN3,#00H
RET
SUB4:MOV XUAN1,#01H
MOV XUAN2,#03H
MOV XUAN3,#02H
RET
SUB5:MOV XUAN1,#01H
MOV XUAN2,#07H
MOV XUAN3,#00H
RET
SUB6:MOV XUAN1,#00H
MOV XUAN2,#01H
MOV XUAN3,#07H
RET
SUB7:MOV XUAN1,#02H
MOV XUAN2,#07H
MOV XUAN3,#00H
SUB8:MOV XUAN1,#03H
MOV XUAN2,#03H
MOV XUAN3,#00H
RET
;=======================显示子程序==============================
;输入:"40H-47H"
;输出:P2口
;实现的功能:显示40H-48H的内容。
;===============================================================
DISPLAY:MOV SHUCHU,HANG1
MOV PIANXUAN,#0FEH
LCALL DELAY
MOV PIANXUAN,#0FFH
MOV SHUCHU,HANG2
MOV PIANXUAN,#0FDH
LCALL DELAY
MOV PIANXUAN,#0FFH
MOV SHUCHU,HANG3
MOV PIANXUAN,#0FBH
LCALL DELAY
MOV PIANXUAN,#0FFH
MOV SHUCHU,HANG4
MOV PIANXUAN,#0F7H
LCALL DELAY
MOV PIANXUAN,#0FFH
MOV SHUCHU,HANG5
MOV PIANXUAN,#0EFH
LCALL DELAY
MOV PIANXUAN,#0FFH
MOV SHUCHU,HANG6
MOV PIANXUAN,#0DFH
LCALL DELAY
MOV PIANXUAN,#0FFH
MOV SHUCHU,HANG7
MOV PIANXUAN,#0BFH
LCALL DELAY
MOV PIANXUAN,#0FFH
MOV SHUCHU,HANG8
MOV PIANXUAN,#7FH
LCALL DELAY
MOV PIANXUAN,#0FFH
RET
;=======================显示子程序==============================
;输入:"48H-4FH"
;输出:P2口
;实现的功能:显示48H-4FHH的内容。
;===============================================================
DISPLAY1:MOV SHUCHU,BEIJING1
MOV PIANXUAN,#0FEH
LCALL DELAY
MOV PIANXUAN,#0FFH
MOV SHUCHU,BEIJING2
MOV PIANXUAN,#0FDH
LCALL DELAY
MOV PIANXUAN,#0FFH
MOV SHUCHU,BEIJING3
MOV PIANXUAN,#0FBH
LCALL DELAY
MOV PIANXUAN,#0FFH
MOV SHUCHU,BEIJING4
MOV PIANXUAN,#0F7H
LCALL DELAY
MOV PIANXUAN,#0FFH
MOV SHUCHU,BEIJING5
MOV PIANXUAN,#0EFH
LCALL DELAY
MOV PIANXUAN,#0FFH
MOV SHUCHU,BEIJING6
MOV PIANXUAN,#0DFH
LCALL DELAY
MOV PIANXUAN,#0FFH
MOV SHUCHU,BEIJING7
MOV PIANXUAN,#0BFH
LCALL DELAY
MOV PIANXUAN,#0FFH
MOV SHUCHU,BEIJING8
MOV PIANXUAN,#7FH
LCALL DELAY
MOV PIANXUAN,#0FFH
RET
;================移动区图形初值子程序===========================
;输入:"40H,41H,42H,43H,44H,45H,46H,47H"
;输出:无
;实现的功能:设置移动区数据初值
;===============================================================
CHUZHI:MOV HANG1,#02H ;开始显示的图形第一行发的数据
MOV HANG2,#07H ;开始显示的图形第二行发的数据
MOV HANG3,#00H ;开始显示的图形第三行发的数据
MOV HANG4,#00H
MOV HANG5,#00H
MOV HANG6,#00H
MOV HANG7,#00H
MOV HANG8,#00H
RET
;====================背景区初值子程序===========================
;输入:"48H,49H,4AH,4BH,4CH,4DH,4EH,4FH,"
;输出:无
;实现的功能:设置背景区数据初值
;===============================================================
CHUZHI1:MOV BEIJING1,#00H
MOV BEIJING2,#00H
MOV BEIJING3,#00H
MOV BEIJING4,#00H
MOV BEIJING5,#00H
MOV BEIJING6,#00H
MOV BEIJING7,#00H
MOV BEIJING8,#00H
RET
;=======================复位子程序==============================
;输入:40H-47H
;输出:无
;实现的功能:把CHULI1-CHULI8的数据清零。
;===============================================================
QINGLING:MOV HANG1,#00H ;数据清零
MOV HANG2,#00H
MOV HANG3,#00H
MOV HANG4,#00H
MOV HANG5,#00H
MOV HANG6,#00H
MOV HANG7,#00H
MOV HANG8,#00H
RET
;====================数据保存1子程序============================
;输入:50H-52H
;输出:
;实现的功能:把40H-42H的数据保存到50H-52H中。
;===============================================================
SHUJU1:MOV SHU1,HANG1 ;保存第一行数据
MOV SHU2,HANG2 ;保存第一行数据
MOV SHU3,HANG3 ;保存第一行数据
RET
;====================数据保存2子程序============================
;输入:50H-52
;输出:
;实现的功能:把旋转后的数据保存到50H-52H中。
;===============================================================
SHUJU2:MOV SHU1,XUAN1 ;保存旋转后第一行的数据
MOV SHU2,XUAN2 ;保存旋转后第二行的数据
MOV SHU3,XUAN3 ;保存旋转后第三行的数据
RET
;====================数据保存3子程序============================
;输入:20H-22H
;输出:
;实现的功能:把50H-52H中的数据放到20H-22H中,放到寻址区。
;===============================================================
SHUJU3:MOV XUAN1,SHU1 ;把保存好的第一行数据转移到寻址区
MOV XUAN2,SHU2 ;把保存好的第二行数据转移到寻址区
MOV XUAN3,SHU3 ;把保存好的第三行数据转移到寻址区
RET
;====================数据保存4子程序============================
;输入:40H-42H
;输出:
;实现的功能:把旋转后的数据保存到50H-52H中。
;===============================================================
SHUJU4:MOV HANG1,XUAN1 ;把寻址区的第一行数据取回
MOV HANG2,XUAN2 ;把寻址区的第二行数据取回
MOV HANG3,XUAN3 ;把寻址区的第三行数据取回
RET
;====================数据保存5子程序============================
;输入:56-5DH
;输出:
;实现的功能:把40H-47H中的数据保存到56H-5DH中。
;===============================================================
SHUJU5:MOV CHENG1,HANG1 ;把数据保存起来
MOV CHENG2,HANG2
MOV CHENG3,HANG3
MOV CHENG4,HANG4
MOV CHENG5,HANG5
MOV CHENG6,HANG6
MOV CHENG7,HANG7
MOV CHENG8,HANG8
RET
;====================数据保存6子程序============================
;输入:
;输出:
;实现的功能:把56H-5DH的数据保存到40H-47H中。
;===============================================================
SHUJU6:MOV HANG1,CHENG1 ;把原来保存的数据取回
MOV HANG2,CHENG2
MOV HANG3,CHENG3
MOV HANG4,CHENG4
MOV HANG5,CHENG5
MOV HANG6,CHENG6
MOV HANG7,CHENG7
MOV HANG8,CHENG8
RET
;====================定时中断0服务子程序========================
;输入:无
;输出:无
;实现的功能:实现定时20MS,影响标中断志位BIT
;===============================================================
T0_1:MOV TL0,#0E0H ;设置定时初值
MOV TH0,#0B1H
SETB BT ;定时标志位清0
RETI
;========================中断设置子程序=========================
;输入:无
;输出:无
;实现的功能:初始化设置定时器,设置初值
;===============================================================
INIT:MOV TMOD,#01H ;定时器0工作方式1
MOV TL0,#0E0H ;设置定时初值
MOV TH0,#0B1H
MOV IE,#82H ;开定时器中断0
SETB TR0 ;开定时器0
RET
;==========================延时子程序===========================
;输入;无
;输出: 无
;实现的功能:延时一段时间
;===============================================================
DELAY:
L6:MOV R6,#30
L7:MOV R7,#20
L8:DJNZ R7,L8
DJNZ R6,L7
RET
;=========================程序结束=============================
END
复制代码
作者:
Ivey
时间:
2015-1-14 14:42
哇
作者:
1176658950
时间:
2015-5-10 23:47
汇编!吊!看不懂!厉害!
作者:
sglf0201
时间:
2015-5-17 09:58
屌,汇编
作者:
古人古人
时间:
2016-5-14 11:51
不会汇编怎么破
作者:
1415660029
时间:
2016-10-3 18:11
看不懂汇编,是C语言就好了
作者:
songxia8013
时间:
2020-2-14 23:28
请问
电路图呢?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1