數碼管EEPROM按鍵儲存值

2021-10-22 17:43:30 字數 4513 閱讀 1667

key.c

#include

"key.h"

//把led.**件包含進來

#include

"eepr.h"

//把led.**件包含進來

#include

"system.h"

//把timer0.**件包含進來

uchar

code

smgduan[10

]=;uchar

displaydata[4

];uinty=

0;ucharx=

0;uchar

num=

252;

void

dig_poll()

//數碼管顯示p0=

displaydata[i

];i+

+;if(

i>3)

}uint

keyscan()

//按鍵掃瞄函式//

定時10

毫秒返回key1

elseif(

timer==

1000)/

/否則長按不停加1}

elseif(

k2==0

)//定時

10毫秒返回key2//

elseif(

timer==

1000)/

/否則長按不停加

1elseif(

timer==

1000)/

/否則長按不停加1}

elseif(

k3==0

)//定時

10毫秒返回key3

elseif(

timer==

1000)/

/否則長按不停加1}

elseif(

k4==0

)//定時

10毫秒返回key4

}else

return0;

}voidxs(

)//數碼管顯示顯示if(

key==2

)if(key==

3)if(

key==4

)if(y

==0)

if(y=

=1)if

(y==

2)}void

weigo()

if(z<

=500)/

/5000

毫秒滅一次

}void

numgo()

//數碼管數字++

}

key.c

#include

"system.h"

//把timer0.**件包含進來

sbit

wei0=p2

^7;sbit

wei1=p2

^6;sbit

wei2=p2

^5;sbit

wei3=p2

^4;sbitk1=

p3^7;

sbitk2=

p3^6;

sbitk3=

p3^5;

sbitk4=

p3^4;

uint

keyscan()

;voidxs(

void);

void

dig_poll()

;void

numgo()

;void

weigo()

;void

weigo1()

;void

weijj()

;

eepr.c

#include

"eepr.h"

//把led.**件包含進來

#include

"system.h"

//把system.**件包含進來

void

iapidle()

void

cha(

uint

addr)/

/擦除扇區函式

void

xie(

uint

addr

,uint

dat)//

寫乙個位元組操作函式

uchar

duqu

(uint

addr)/

/讀取位元組函式

eepr.h

在這裡插入**片

#include

"system.h"

//把system.**件包含進來

#include

"intrins.h"

#define

cmd_no

0//禁止讀寫

#define

cmd_du

1//允許讀操作

#define

cmd_xie

2//允許寫操作

#define

cmd_cha

3擦除扇區

#define

enable_iap

0x82

//12

m晶振#

define

iap_address

0x2000

//11

f051

k起始扇區首位址

sfriap_data

=0xe2;/

/資料暫存器

sfriap_addrh

=0xe3;/

/位址高八位

sfriap_addrl

=0xe4;/

/位址低八位

sfriap_cmd

=0xe5;/

/命令暫存器

sfriap_trig

=0xe6;/

/命令觸發器

sfriap_contr

=0xe7;/

/控制暫存器

void

iapidle()

;uchar

duqu

(uint

addr);

//讀位元組void

xie(

uint

addr

,uchar

dat)

;void

cha(

uint

addr);

//擦除扇區

main.c

#include

"system.h"

#include

"key.h"

#include

"eepr.h"

//把led.**件包含進來

//extern

uint

num=

188;

extern

uchar

flag_1ms;/

/在其他模組中尋找其定義。另外,extern也可用來進行鏈結指定。

void

main

(void)/

/程式的主函式

}}

#include

"reg52.h"

#define

uchar

unsigned

char//

定義無符號字元

#define

uint

unsigned

int/

/定義無符號整形

#define

fosc

12000000l/

/定義晶振頻率

#define

t1ms

(65536

-fosc/12

/1000)/

/定時10毫秒的時候,計數器要寫入的值//

void

delay_us

(uint

xus);/

/us級延時//

void

delay_ms

(uint

xms);/

/ms級延時

void

timer0_init

(void);

//定時器初始化

void

delay

(uinti)

;

#include

"system.h"

uchar

flag_1ms=0

;void

timer0_init

(void

)void

timer0()

interrupt

1//中斷號1/

*void

delay_us

(uint

xus)

void

delay_ms

(uint

xms)

}void

delay

(uinti)

*/

按鍵控制數碼管

按key1加一,按key2減一,按key3清零 include reg52.h 此檔案中定義了微控制器的一些特殊功能暫存器 typedef unsigned int u16 對資料型別進行宣告定義 typedef unsigned char u8 sbit lsa p2 2 sbit lsb p2 ...

按鍵數碼管顯示實驗

要求 能夠實現本微控制器按下鍵盤,能夠在數碼管上顯示鍵盤值。連線 將片選cs0鏈結到key led cs。define ledlen 6 xdata unsigned char outbit at 0x8002 位控制口 xdata unsigned char outseg at 0x8004 段控...

按鍵數碼管數值前移

include typedef unsigned char uchar typedef unsigned int uint void delay unsigned int i 函式聲名 char delaycnt 定義變數 sbit p10 p1 0 uint count 0 uchar n 0 u...