我做过单片机控制MC145152+BA1404的,在网上看到有人用MB1504做锁相控制的。
MC145152是并行输入控制的锁相环,多用在电视机里蠢改迟面,MB1504多用在对讲带李机里歼改。
当然现在也有现成的锁相环调频发射模块,BH1417就不错。
这是一个c语言编的打砖块游戏的雏形肆铅编译前在主目录下建立一颂雹悔个文本文件(xia.txt)内容为:0 0 0 0 0
#include<dos.h>
#include<stdio.h>
#include<graphics.h>
#include<math.h>
union REGS regs
unsigned int zhuan[5]
int Msinit()
void Setmouse(int left,int right,int top,int buttom)
int Msread(int *xp,int *yp,int *bup)
void Draw(int x,int y,int sizex,int sizey)
main()
{int mode=VGAHI,driver=VGA<br/>unsigned int l<br/>int i,gi,gj,j,flag=1/*i,j是循环变量,flag是标记变量,-1:向x负半轴移动,+1:向x正半轴移动*/<br/>double qx,qy,k,b=0.0,speech=0.4,x,y<br/>double r=2.0,bx=60.0,byy=270.0<br/>double pianx=100.0,piany=100.0,tx=20.0,ty=10.0,jx=2.0,jy=2.0<br/>int mx=0,my=0,mb,sum/*sum纪录砖块的数目*/<br/>FILE * p<br/> if((p = fopen("xia.txt", "r")) == NULL)<br/> {printf("The file cannot open!\n")<br/>exit(1)}
initgraph(&driver,&mode,"\\tc\\BGI")
Msinit()
Setmouse((int)(pianx+1+bx/2),(int)((tx+jx)*8+pianx-1-bx/2),(int)byy+piany,(int)byy+piany)
star:cleardevice()/*程野正序重载的介入点*/
sum=0
qx=100.0+pianx-10qy=180.0+pianx-10k=0.33
setcolor(7)
rectangle((int)(pianx-2),(int)(piany-2),(int)((tx+jx)*8+2+pianx),302+piany)
setcolor(1)
rectangle((int)(pianx-1),(int)(piany-1),(int)((tx+jx)*8+1+pianx),301+piany)
/*读取盘面情况*/
for(i=0i<5i++)
fscanf(p,"%x ",&zhuan[i])
/*画砖块*/
for(i=0i<5i++)
{l=1<br/> for(j=0j<16j++)<br/> {if((zhuan[i]&l)==0)<br/> {Draw((int)((jx+tx)*((16*i+j)%8)+pianx+jx),(int)((jy+ty)*((int)((16*i+j)/8))+piany+jy),<br/><br/>(int)tx,(int)ty)<br/> sum+=1<br/> }
l=l*2
}
}
for()
{ setfillstyle(1, 0)
bar(mx-bx/2,my,mx+bx/2,my+5)
Msread(&mx, &my, &mb)
Draw(mx-bx/2,my,bx,5)
setcolor(0)
circle(qx,qy,r)
/*判断求是否反d*/
if(qx-r<=pianx+1 || qx+r>=(tx+jx)*8+pianx-1) {flag=-flagk=-k}
if(qy-r<=piany+1) k=-k
for(gi=0gi<5gi++)
{l=1<br/> for(gj=0gj<16gj++)<br/> {<br/> if((zhuan[gi]&l)==0)<br/> {j=(16*gi+gj)/8<br/>i=(16*gi+gj)%8<br/>x=(jx+tx)*i+jx+tx/2+pianx<br/>y=(jy+ty)*j+jy+ty/2+piany<br/>/*边判断1*/<br/>if(qy>=y-ty/2 &&qy<=y+ty/2 &&(pow(qx+r-x+tx/2,2)<1 || pow(qx-r-x-tx/2,2)<1))<br/> {flag=-flagk=-k<br/> zhuan[gi]=zhuan[gi]|l<br/> sum-=1<br/> if(sum==0) {printf("Win!\n")getch()goto star}
setfillstyle(1, 0)
bar((jx+tx)*i+pianx+jx,(jy+ty)*j+piany+jy,(jx+tx)*i+pianx+jx+tx,(jy+ty)
*j+piany+jy+ty)
}
else
/*边判断2*/
if(qx>=x-tx/2 &&qx<=x+tx/2 &&(pow(qy+r-y+ty/2,2)<1 || pow(qy-r-y-ty/2,2)<1))
{k=-k<br/> zhuan[gi]=zhuan[gi]|l<br/> sum-=1<br/> if(sum==0) {printf("Win!\n")getch()goto star}
setfillstyle(1, 0)
bar((jx+tx)*i+pianx+jx,(jy+ty)*j+piany+jy,(jx+tx)*i+pianx+jx+tx,(jy+ty)
*j+piany+jy+ty)
}
else
/*角判断*/
if(pow(qx-x+tx/2,2)+pow(qy-y+ty/2,int *bup)
{int xnew,ynew,ch<br/> if(kbhit()) return getch()<br/> regs.x.ax=3<br/> int86(0x33,&regs,&regs)<br/> xnew=regs.x.cx<br/> ynew=regs.x.dx<br/> *bup=regs.x.bx<br/>*xp=xnew<br/>*yp=ynew<br/>return -1<br/>}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)