
#include<reg51h>
#define uchar unsigned char
uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; //0到9
uchar num,cnt,disn;
uchar keyval,disk;
uchar led[]={1,2,3,4};
void dealdat(uchar a)
{
led[0]=0;
led[1]=0;
led[2]=0;
led[3]=0;
led[a]=disk;
}
void delay(unsigned int a)
{
unsigned int i,j;
for(i=0;i<a;i++)
for(j=0;j<1000;j++);
}
void t0isr() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
switch(num)
{
case 0:P2=0x01;break;
case 1:P2=0x02;break;
case 2:P2=0x04;break;
case 3:P2=0x08;break;
default:break;
}
P0=~tab[led[num]];
num++;
num&=0x03;
cnt++;
if(cnt>100)
{
cnt=0;
disn++;
disn%=4;
dealdat(disn);
}
}
uchar kbscan(void)
{
unsigned char sccode,recode;
P3=0x0f; //发0扫描,列线输入
if ((P3 & 0x0f) != 0x0f) //有键按下
{
// delay(20); //延时去抖动
if ((P3&0x0f)!= 0x0f)
{
sccode = 0xef; //逐行扫描初值
while((sccode&0x01)!=0)
{
P3=sccode;
if((P3&0x0f)!=0x0f)
{
recode=(P3&0x0f)|0xf0;
return((~sccode)+(~recode));
}
else
sccode=(sccode<<1)|0x01;
}
}
}
return 0; //无键按下,返回0
}
void getkey(void)
{
unsigned char key;
key=kbscan();
if(key==0){keyval=0xff;return;}
switch(key)
{
case 0x11:keyval=7;break;
case 0x12:keyval=4;break;
case 0x14:keyval=1;break;
case 0x18:keyval=10;break;
case 0x21:keyval=8;break;
case 0x22:keyval=5;break;
case 0x24:keyval=2;break;
case 0x28:keyval=0;break;
case 0x41:keyval=9;break;
case 0x42:keyval=6;break;
case 0x44:keyval=3;break;
case 0x48:keyval=11;break;
case 0x81:keyval=12;break;
case 0x82:keyval=13;break;
case 0x84:keyval=14;break;
case 0x88:keyval=15;break;
default:keyval=0xff;break;
}
}
main()
{
TMOD=0x11;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
getkey();
if(keyval!=0xff)disk=keyval;
delay(10);
}
}
JTAG(Joint Test Action Group;联合测试行动小组)是一种国际标准测试协议(IEEE 11491兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。
UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。
Jtag用的比较多的是单片机的在线仿真,当然也有ISP在线仿真的。UART主要是用作串口通信的,还有一种SPI通信。当然IIC也是常用的协议。 以后学到了就明白了。可以看看郭天祥的51视频教程。
我们平时用keil主要是编程,生产hex文件,然后根据不同的单片机选择不同的下载软件。比如STC89S52的单片机,就用STC_ISP这个软件下载程序的。如果是AT89c51的单片机,又要用不同的下载程序了。Atmel公司的51没用过,所以不是很清楚。
1、打开C51程序书写软件,新建工程,在d出的对话框编辑工程名并保存到要保存的地方。
2、保存之后会d出如下的窗口,点击Atmel的加号,选择AT89s52并确定。
3、此时就要开始建立程序了,点击如图的图标,新建程序,注意保存的时候一定要在名字后面加“c”。
4、此时点击左边的文件夹,双击,会出现下一级的文件夹,继续双击,d出对话框中找到刚保存的C程序。双击它或者点击对话框下面的add,关闭d出的对话框,此时建立工程就完毕了。
5、点击窗口的Target 1左边的图标,选择如图的标签。勾选红色标注的地方(生成hex文件)。
6、 这样就进行后面的书写程序,编译吧。然后进入下一步,烧写程序,点击打开“打开程序文件”。到保存程序的地方,选中后缀为hax的文件并双击。
7、点击下载,此之前要连接单片机开发板,并且开发板电源处于关闭。
以上就是关于c51单片机程序实例全部的内容,包括:c51单片机程序实例、什么是JTAG协议和UART协议两者有什么不同之处拿Keil这个软件向C51单片机中下载程序为例说明一下、C51单片机发送字符串程序怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)