计算机与单片机的通信

想利用电脑USB口与单片机进行通信,并控制单片机。需要用c++对电脑编程,用汇编对单片机编程。谁有好的意见,或能提供源代码,或相关经验,谢谢!... 想利用电脑USB口与单片机进行通信,并控制单片机。
需要用c++对电脑编程,用汇编对单片机编程。谁有好的意见,或能提供源代码,或相关经验,谢谢!
展开
 我来答
yangyuln
2009-04-30 · 超过15用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:54.4万
展开全部
汇编一定要学好,但对单片机编程不要用汇编。
这样你很难找到错误。不超过100行的可以试试。

c语言是你最常用的编程工具。所有的芯片都会提供给你一个c语言编译器。所以c是最常用的。

c学好了可以试一试学习plc,它也是常用的。

下面是跑马灯的源代码:
#include<reg52.h>
sbit ALE = P2^6;
sbit EOC = P2^5;
sbit OE = P2^4;
sbit RED = P3^6; //正弦波时红灯亮
sbit GREEN=P3^7; //方波时绿灯亮
sbit key =P2^3;
sbit d0 = P2^0; //显示138选通位
sbit d1 = P2^1;
sbit d2 = P2^2;
sbit sw = P2^7; //脉冲判断位,是0则为脉冲
#define uchar unsigned char
#define ulong unsigned long int
#define uint unsigned int
bit dipin= 0x00; //低频判断位,为1时为低频;
bit zhan = 0x01; //测量占空比标致位,为1时测量脉宽;
uchar r0;
uchar r1;
uchar r2;
uchar r3;
uchar r4;
uchar r5;
uchar r6;
uchar r7;
uchar display_num[8];
uchar maikuan[8];
ulong counter=0;
uchar count=0;
float zhouqi,zhankong,zhankong_num;
ulong counter_num;
uchar th1,tl1;
char disnumb[10]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6};
//////////
//================函数申明=============================================
void initial(void);
void display(void);
void fre(void);
void tiemr0(void);
void timer1(void);
void zhankongbi(void);
uchar i,j,m,n,l;
uchar k;
void toint(void);

///==============主函数====================================

void main()
{
initial();
RED = 0;
GREEN=0;
while(1)
{ while(TR1==0)
fre();
display();
}
}
//================频率测量=========================================
void fre()
{ TR0=1;
TR1=1;
}
//================初始化===================================================
void initial()
{ TMOD=0x16;
TH0=0x00;TL0=0x00; //T0用于计数,工作在方式2
th1=0xd8;tl1=0xef;
TH1=th1;TL1=tl1; //T1用于定时一秒,工作在方式1
ET0=1;ET1=1;
ES=1;
EA=1;
}
//================数码管显示程序===========================================
void display()
{ j=0x08;
n=0;
for(i=0;i<8;i++)
{ j=j-1;
ACC=j;
P2=ACC;
m=display_num[n];
SBUF=disnumb[m];
while(!TI);
TI=0;
k=250;
while(k)
k--;
n=n+1;
P2=0x07;
}

}
//==================中断子程序===================================
void tiemr0() interrupt 1 using 0
{
counter+=1;
}
void toint() interrupt 4
{ while(0);
}
void timer1() interrupt 3 using 0
{
TH1=0xd8;TL1=0xf6;
count=count+1;
if(count==100)
{ TR1=0;
TR0=0;
counter_num=(counter*256)+TL0;
//zhouqi=1.0/(float)counter_num;
display_num[3]=counter_num/10000;
display_num[4]=counter_num%10000/1000;
display_num[5]=counter_num%1000/100;
display_num[6]=counter_num%100/10;
display_num[7]=counter_num%10;
count=0;
counter_num=0;
counter=0;
TH1=0xd8;TL1=0xef;
TH0=0x00;TL0=0x00;
}

}
liuzhaominglzm
2009-04-29 · TA获得超过288个赞
知道小有建树答主
回答量:204
采纳率:0%
帮助的人:161万
展开全部
找一些关于CH341的资料基本就可以解决此问题了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一万光年MEGn0
2009-04-30 · TA获得超过3712个赞
知道大有可为答主
回答量:4602
采纳率:67%
帮助的人:1089万
展开全部
一般的单片机不可能用USB与电脑通讯的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
开车撞死牛
2009-05-04 · 超过18用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:38.5万
展开全部
那你要是真想实现单片机和PC机通讯的话那去买一根USB转串口线不就行了啊,干嘛这么费事啊,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式