久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2493|回復: 14
打印 上一主題 下一主題
收起左側

請教如何利用P30按鍵的長按來操作51單片機芯片內的EEPROM,讓a得到8至20間的數

[復制鏈接]
跳轉到指定樓層
樓主
ID:334440 發表于 2022-5-25 01:21 來自手機 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
/*   d1-p31,d2-p32,d3-p33,d4-p34
a-P10,b-P11,c-P12,d-P13,e-P14,f-P15,g-P16,dp-P17
12v to in1 to p37(IN)......P35 is out......P30 is OUT2 */
#include <stc12c20xx.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define FOSC 11059200L
#define T1MS (FOSC/12-1000)
uint a,b,c;

uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

void  cc(uint addr);
void  xcx(uint addr,uchar dat);
uchar dcx(uint addr);
void  Q0();


void delay(uint i)
{
  uint j,k;
  for(j=i;j>0;j--)
    for(k=125;k>0;k--);
}


void display()
{
  
   P1=table[a%10000/1000];         
   P31 = 0;                        
   delay(5);
   P31 = 1;                        

   P1=table[a%1000/100];
   P32 = 0;                        
   delay(5);
   P32 = 1;                        

   P1=table[a%100/10];
   P33 = 0;                        
   delay(5);
   P33 = 1;                        

   P1=table[a%10];
   P34 = 0;                        
   delay(5);
   P34 = 1;               
   
}


void Timer_Init(void)
{
          AUXR &= 0x3F;//00111111
           TMOD = 0x11;
          TL1 = T1MS;
          TH1 = T1MS>>8;
          TF1 = 0;
          ET1 = 1;
}




void main(void)
{
        P1M0 = 0x00;
        P1M1 = 0x00;
  P3M1 = 0x00;
        P3M0 = 0x20;      //00100000
  a=0;
  b=0;
  P35=0;
        c = dcx(0x2002);
  Timer_Init();
               
  while(1)
        {
                if((P37==1)&&(P30==0))
                {
                        delay(5);
                        if((P37==1)&&(P30==0))
                        {                                
                                if(c<8){c==8;cc(0x2000);xcx(0x2002,c);}else;
                                if(c>20){c==8;cc(0x2000);xcx(0x2002,c);}else;
                                cc(0x2000);xcx(0x2002,c);
                                EA=1;
                                TR1=1;                                
                         }else;
                 }else;
        }
}

void cc(uint addr)
{        
// 0x83(??<5M)   0x82(??<10M)   0x81(??<20M)   0x80(??<40M)
    ISP_CONTR = 0x81;  
    ISP_CMD   = 0x03;                  
    ISP_ADDRL = addr;        
    ISP_ADDRH = addr>>8;      
          EA =0;   
    ISP_TRIG = 0x46;         
    ISP_TRIG = 0xB9;         
    _nop_();

    Q0();                                          
}

void xcx(uint addr,uchar dat)
{
    ISP_CONTR = 0x81;                  
    ISP_CMD   = 0x02;              
    ISP_ADDRL = addr;        
    ISP_ADDRH = addr>>8;      
    ISP_DATA  = dat;         
    EA = 0;
    ISP_TRIG = 0x46;         
    ISP_TRIG = 0xB9;         
    _nop_();
    Q0();                                         
}

uchar dcx(uint addr)
{   
    uchar dat;        
          ISP_CONTR = 0x81;                  
    ISP_CMD   = 0x01;         
    ISP_ADDRL = addr;         
    ISP_ADDRH = addr>>8;      
    EA = 0;
    ISP_TRIG = 0x46;         
    ISP_TRIG = 0xB9;         
    _nop_();
    dat = ISP_DATA;                          
        Q0();                                          
        return dat;
}

void Q0()
{
    ISP_CONTR = 0;            
    ISP_CMD   = 0;            
    ISP_TRIG  = 0;            
}


void t1(void) interrupt 3 using 2
{        
        TL1=T1MS;
        TH1=T1MS>>8;
        b++;
        a=c;
  display();  
    if(b>=1000)
          {
                 b=0;
           c++;
                 if(c>20)c=8;else ;
                 }               
  if(P30==1){delay(5);if(P30==1){a=0;TR1=0;}else;}else ;
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:334440 發表于 2022-5-25 07:43 | 只看該作者
剛驗證了一下,是可以用了,把T1MS改為常數64536穩定一些
回復

使用道具 舉報

板凳
ID:230742 發表于 2022-5-25 12:23 | 只看該作者
隨機數產生了!恭喜恭喜。
回復

使用道具 舉報

地板
ID:334440 發表于 2022-5-26 05:57 來自手機 | 只看該作者
啤酒瓶子老大 發表于 2022-5-25 12:23
隨機數產生了!恭喜恭喜。

可以指點一下嗎
回復

使用道具 舉報

5#
ID:161164 發表于 2022-5-26 10:40 來自手機 | 只看該作者
看不懂你的提問,a和EEProm有啥關系?
回復

使用道具 舉報

6#
ID:334440 發表于 2022-5-26 12:24 | 只看該作者
lkc8210 發表于 2022-5-26 10:40
看不懂你的提問,a和EEProm有啥關系?

需要8至20的常數作另外的代碼運算,EEPROM可以記錄這個數,P30用來修改這個數,不修改的話,就是一個固定值,賦值給a
回復

使用道具 舉報

7#
ID:624769 發表于 2022-5-26 13:10 來自手機 | 只看該作者
if(c<8){c==8;cc(0x2000);xcx(0x2002,c);} 這個病句,就沒人看出來么?

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

8#
ID:230742 發表于 2022-5-26 14:59 | 只看該作者
我也不會。
我只是一個愛好者。
超級喜歡單片機而已。
回復

使用道具 舉報

9#
ID:334440 發表于 2022-5-26 22:44 來自手機 | 只看該作者
188610329 發表于 2022-5-26 13:10
if(c

如果讀到的c小于8,則賦值8,并擦除扇區,重新寫入c的值,以備取用
回復

使用道具 舉報

10#
ID:624769 發表于 2022-5-26 22:58 | 只看該作者
onetwoto 發表于 2022-5-26 22:44
如果讀到的c小于8,則賦值8,并擦除扇區,重新寫入c的值,以備取用

你說的如此理直氣壯,倒是弄得我不自信了……
不如大家投票吧……

問題: 給 c 賦值 8 應該用以下哪個語句?
A)   c =  8;
B)   c == 8;
答:
回復

使用道具 舉報

11#
ID:161164 發表于 2022-5-26 23:44 來自手機 | 只看該作者
onetwoto 發表于 2022-5-26 12:24
需要8至20的常數作另外的代碼運算,EEPROM可以記錄這個數,P30用來修改這個數,不修改的話,就是一個固定 ...

但看你的代碼,c是隨時間由8增加到20又變回8啊?
根本不固定
而且P30==1 是按下還是沒按下?
代碼頭幾行注釋P30是Out, 所以P30是輸入還是輸出?
P37==1 && P30==0 又是哪個鍵按下?
回復

使用道具 舉報

12#
ID:334440 發表于 2022-5-27 07:09 來自手機 | 只看該作者
188610329 發表于 2022-5-26 22:58
你說的如此理直氣壯,倒是弄得我不自信了……
不如大家投票吧……


抱歉抱歉,我不是理直氣壯,我是業余學習,時間比較緊,語言不到之處請見諒,賦值是c=8;
回復

使用道具 舉報

13#
ID:334440 發表于 2022-5-27 07:13 來自手機 | 只看該作者
lkc8210 發表于 2022-5-26 23:44
但看你的代碼,c是隨時間由8增加到20又變回8啊?
根本不固定
而且P30==1 是按下還是沒按下?

1.是要求c必須是8至20間的數,如果小于8或大于20就不行。2.常規stc的設計,等于0的都表示按下了,等于1的都表示松開,p30在這里用按鍵輸入
回復

使用道具 舉報

14#
ID:161164 發表于 2022-5-27 10:22 | 只看該作者
onetwoto 發表于 2022-5-27 07:13
1.是要求c必須是8至20間的數,如果小于8或大于20就不行。2.常規stc的設計,等于0的都表示按下了,等于1的 ...

終于弄明白你這憋扭的代碼
0
上電
讀取EEProm,放到C
初始化定時器但不運行

1
P30按下,消抖,檢驗C值,寫入EEProm,運行定時器

2
1ms后,定時器中斷,d++,把C值放到A,輸出數碼管

1ms后,重復2
5ms后,重復1

3
P30放開,停止定時器

4
P30不放開,直到d大于1000(1s)
d清零,c++,然后檢查是否大于零

這就是你的長按改變c的運行流程

這代碼最大的問題是每次長按EEProm都會擦寫200次
不知道這c值會不會經常改變
不然號稱10萬次擦寫壽命的EEProm只能定的住5000次長按
回復

使用道具 舉報

15#
ID:334440 發表于 2022-5-27 22:48 來自手機 | 只看該作者
lkc8210 發表于 2022-5-27 10:22
終于弄明白你這憋扭的代碼
0
上電

很感激你能讀透我的思路,看樣子我這代表碼問題嚴重,實現不了這個功能了嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 影音先锋中文字幕在线观看 | 国产成人精品一区二区三区四区 | 噜噜噜噜狠狠狠7777视频 | xx视频在线 | 色综合天天天天做夜夜夜夜做 | 亚洲欧美国产精品一区二区 | 日韩在线小视频 | 精品一级毛片 | 最近中文字幕第一页 | 国产一区二区三区免费视频 | 91精品国产一区二区三区 | 国产精品久久国产愉拍 | 成年人在线观看视频 | 一本综合久久 | 国产一区二区麻豆 | 一区二区三区av | 四虎影院在线观看av | www.青青草| 一区二区三区欧美大片 | 91精品国产91久久久久久最新 | 欧美a在线看 | 91天堂网 | 国产精品精品视频一区二区三区 | 最新免费黄色网址 | 亚洲精品久久嫩草网站秘色 | 国产福利在线 | 亚洲精品九九 | 精品毛片| 久久久国产一区 | 欧美日韩高清一区 | 亚洲精品电影网在线观看 | 免费的一级视频 | 精品av久久久久电影 | 国产一区二区免费 | 国产一级片一区二区三区 | 一级在线视频 | 成人精品鲁一区一区二区 | 91资源在线| 99免费看| 一级毛片观看 | 一区二区福利视频 |