推荐阅读最新更新时间:2024-03-16 14:51
实时时钟DS1302读写程序(C51)
//打开DS1302 void TimeSpiOpen(void) { TIMECLK = 0; TIMERST = 0;//禁止DS1302 TIMEIO = 1;//释放数据总线 TIMERST = 1;//使能DS1302 } //关闭DS1302 void TimeSpiClose(void) { TIMERST = 0;//禁止DS1302 TIMEIO = 1;//释放数据总线 TIMECLK = 1; } //读写DS1302 unsigned char TimeSpiReadWrite(unsigned char val) { unsigned char i; ACC = val;//取8位数据 for (i =
[单片机]
keil中C51关键字code用法
keil中关键字code说明 关键字code是51单片机特有关键字,用unsigned int 或signed char等定义的变量都存储在单片机的RAM中,程序中可以随意更改这些变量的值。而运用code关键字修饰下定义的变量,比如unsigned char code i;,它们则存储在单片机程序存储空间FLASH中,节省单片机RAM资源,但在程序中不能更改这些变量的值。
[单片机]
【C51单片机】数码管实现99秒倒计时
C51单片机之数码管实现99秒倒计时(结合定时器)—STC89C52单片机 代码如下: #include reg52.h typedef unsigned char u8; typedef unsigned int u16; sbit b1 = P2^2; sbit b2 = P2^3; sbit b3 = P2^4; u8 duan = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71}; u16 count = 99; u16 digit = 0; //延时函数 void
[单片机]
C51液晶显示(LM016L)实验1
程序如下: //适合LM016L液晶显示器 #include reg51.h #include intrins.h #define uchar unsigned char #define uint unsigned int void delay_nms(int); bit LCD_busy(); void LCD_write_cmdata(uchar); void LCD_write_wodata(uchar); void LCD_Init(); //端口设置 sbit LCD_RS=P1^2; sbit LCD_RW=P1^1; sbit LCD_EA=P1^0; sbit LCD_BF=P0^7; uchar
[单片机]
C51单片机存储器类型有哪些?
C51存储器类型有bit sbit data xdata bdata pdata sfr code等,可能不全面有遗漏对应的物理存储器是: bit,即位数据:数据存储器位寻址区,即20H~2FH的范围,共16个字节,16*8=128个位,位地址00h~7fh,连续的。 sbit:特殊功能寄存器中的位数据:只有能够被8整除的那些特殊功能寄存器中的各个位才能被称为sbit,位地址80H~FFH,不连续的,间断的。 data:数据区,对51为00H~7FH共128个字节,对52为00H~FFH,共256个字节,用MOV寻址,前128用直接寻址或寄存器(R0~R7)寻址,后128用R0、R1间接寻址。 xdata:外部数据区,00
[单片机]
最简单的4*4矩阵键盘程序 c51
调试通过. key_scan_p2() //定时器,或者主程序扫描 { uchar x,y,z; P2=0x0f; x=P2&0x0f; P2=0xf0; y=P2&0xf0; z=x|y; if(z!=key_value1) key_value1=z; //如果两次结果不同 else { if(key_value1 == 0xff) key_release=0; else { if (key_release==0) //所有按键已经松开了吗? { key_release = (z ^ 0xFF); key_val = z; switch(key
[单片机]
c51: 24C02 多字节读、写
//函数功能, //写入2个数据,在读出。 #include reg51.h #include intrins.h //变量声明 #define uchar unsigned char #define uint unsigned int //将数值转换为字符 uchar digit = 0123456789ABCDEF ; //延时 1ms void delayms() { uchar i; for(i=0;i 250;i++); for(i=0;i 80;i++); } void delaynms(uint s) { uint tem; for(tem=0;tem s;tem++) { delay
[单片机]
关于Keil C51中using关键字的使用心得
刚才看到一位很牛的师兄写的一篇日志中提到了Keil C51中using这个关键字的用法,粗心的我本来一直都没有留意它是用来干嘛的(因为我一般看见它都是在中断服务函数的定义开头处,好像没有了它也可以中断呀,所以才没怎么管),然而在日志中有看到这个关键字,所以也考究了一下,突然发现,原来这个东东和我最近在帮一个同学调的一个程序的时候突然遇到一个很怪的问题是有关系的,而且就是因为它才搞得程序莫明奇妙的出错(因为编译通过了,看起来也没什么错误,按C语言的逻辑分析也分析不出个什么所以然来,所以才怪)。 后来调试了好久,甚至到http://www.51hei.com/keil%CF%C2%D4%D8.html 这里下载了好几个版本的keil,反
[单片机]