c51单片机程序实例

c51单片机程序实例,第1张

#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单片机发送字符串程序怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9327724.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存