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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5649|回復: 7
收起左側

AT89C51單片機改成STC15的程序要注意哪些事項啊?

[復制鏈接]
ID:521756 發表于 2019-4-25 21:37 | 顯示全部樓層 |閱讀模式
我是一個單片機的白紙,學校有微機原理課也有數電課,但感覺對我們的編程能力并沒什么作用【攤手】,現在要求我們動手做一個八位搶答器,我在百度伸手了一個C51的程序,但沒法和我們的板子兼容,想問問各位大神是如何快速上手的,學校發的視頻教程看完以后只會控制幾個LED燈很崩潰但也只能瞎著急【掀桌】,我不知道我這個問題是不是很蠢,還在繼續看,如果我自己解決了的話就刪了,感謝各位
#include <reg52.h>        
        #define uint unsigned int
        #define uchar unsigned char
        unsigned char code table[]={0xc0,0xf9,0xa4,
    0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0};
        sbit start=P3^6;
        sbit reset=P3^7;
        sbit key1=P1^0;
        sbit key2=P1^1;               
        sbit key3=P1^2;
        sbit key4=P1^3;
        sbit key5=P1^4;
        sbit key6=P1^5;
        sbit key7=P1^6;
        sbit key8=P1^7;
        sbit jia=P3^4;
        sbit jian=P3^5;
        bit action = 0;
        uchar second=10,a[7]={0};
        uchar timer0_count = 0;
        uchar number=0;
        uchar number_display = 0;
        uchar k;
        void delay(uint z)
        {
                uint x,y;
                for(x=z;x>0;x--)
                        for(y=120;y>0;y--);
        }
        void display(uchar number,uchar second)
        {                        
                P2 = 0x01;
                P0 = table[second];        
                delay(1);
                P2 = 0x02;
                P0 = table[number];
                delay(1);
                P2 = 0x04;
                P0 = table[a[0]];
                delay(1);
                P2 = 0x08;
                P0 = table[a[1]];
                delay(1);
                P2 = 0x10;
            P0 = table[a[2]];
                delay(1);
                P2 = 0x20;
                P0 = table[a[3]];
                delay(1);
                P2 = 0x40;
                P0 = table[a[4]];
                delay(1);
                P2 = 0x80;
                P0 = table[a[5]];
                delay(1);        
        }
        void start_keyscan()
        {
            void fengling();
                while(start == 0)
                {
                    key7=0;
                        display(number_display,second);
                        if(start == 1)
                        {
                            key7=1;
                                action  = 1;
                                TR0 = 1;               
                        }
                }        
        }
        
        uchar key_scan8()
        {
                if(key1 == 0)
                {
                        delay(8);
                        if(key1 == 0)
                        {
                                number  = 1;
                                number_display = number;
                        }
                }
                                if(key2 == 0)
                {
                        delay(8);
                        if(key2 == 0)
                        {
                                number  = 2;
                                number_display = number;
                        }
                }
                if(key3 == 0)
                {
                        delay(8);
                        if(key3 == 0)
                        {
                                number  = 3;
                                number_display = number;
                        }
                }
                if(key4 == 0)
                {
                        delay(8);
                        if(key4 == 0)
                        {
                                number  = 4;
                                number_display = number;
                        }
                }
                if(key5 == 0)
                {
                        delay(8);
                        if(key5 == 0)
                        {
                                number  = 5;
                                number_display = number;
                        }
                }
                if(key6 == 0)
                {
                        delay(8);
                        if(key6 == 0)
                        {
                                number  = 6;
                                number_display = number;
                        }
                }                                                        
                if(number_display != 0)        
                {
                        return number_display;
                }
                else
                {
                        return 0;
                }               
        }
        void reset_keyscan()
        {
                if(reset == 0)
                {
                        delay(8);
                        if(reset == 0)
                        {
                                number_display = 0;                        
                               second=10;
                }
                }        
        }
        void main()
        {
                TMOD=0x01;
                TH0=(65536-50000)/256;
                TL0=(65536-50000)%256;
                EA=1;
                ET0=1;
                TR0=0;
                P2=0x00;                                
                while(1)
                {
                    reset_keyscan();
                        start_keyscan();                    
                         if(jia==0&&a[number-1]<9)
              {  
                 delay(10);
                 while(jia==0)
                     display(number_display,second);
                     a[number-1]=a[number-1]+1;           
              }
            if(jian==0&&a[number-1]>0)
              {
                 delay(10);
                     while (jian==0)
                     display(number_display,second);
                     a[number-1]=a[number-1]-1;
              }
                        while(action)
                        {
                         while(!key_scan8())              
                        {        
                                display(number_display,second);
                                if(second == 0)
                                {
                                        second = 10;
                                        break;
                                }
                        }
                                        TR0 = 0;
                                        key7=0;
                                        delay(80);
                                   display(number_display,second);                                                
                 key7=1;
                                        action = 0;
                                        break;
                        }
                        display(number_display,second);        
                }
        }
        void timer0() interrupt 1
        {
                TH0=(65536-50000)/256;
                TL0=(65536-50000)%256;
                timer0_count ++;
                if(timer0_count == 20)
                {        
                        second --;
                        timer0_count = 0;
          if(second==0)
                        {
                           key7=0;
                           delay(60);
                           key7=1;
                     }
                 }                                
         }

全新升級版CT107S V1.5 原理圖 【彩版】.pdf

165.66 KB, 下載次數: 9

開發板原理圖

回復

使用道具 舉報

ID:155507 發表于 2019-4-25 23:46 | 顯示全部樓層
老式51單片機都是12T,現在有部分單片機采用1T模式,如STC12, STC15系列等。
所謂12T模式指一個機器周期=12個時鐘周期
而1T模式指的是一個機器周期=1個時鐘周期
比如對于常用的12MHz晶振來說:
12T模式,一個機器周期為1us
1T模式,一個機器周期為1/12us.

延時肯定要改的,還有單片機的頭文件要改的
回復

使用道具 舉報

ID:93224 發表于 2019-4-26 00:16 | 顯示全部樓層
注意延時的問題
回復

使用道具 舉報

ID:572103 發表于 2019-8-12 17:18 | 顯示全部樓層
延時函數,中斷,引腳定義都要改一下。
回復

使用道具 舉報

ID:936311 發表于 2021-6-10 22:49 | 顯示全部樓層
angmall 發表于 2019-4-25 23:46
老式51單片機都是12T,現在有部分單片機采用1T模式,如STC12, STC15系列等。
所謂12T模式指一個機器周期=1 ...

大佬,有沒有引腳上功能什么的應該注意啊
回復

使用道具 舉報

ID:123289 發表于 2021-6-11 13:11 | 顯示全部樓層
很簡單,讀通兩個芯片的手冊,一切都明白了。本方法適用于所有類似的問題。
回復

使用道具 舉報

ID:261837 發表于 2021-6-14 13:35 來自觸屏版 | 顯示全部樓層
頭文件寄存器和引腳輸出配置改好就行了
回復

使用道具 舉報

ID:932858 發表于 2021-6-26 14:48 | 顯示全部樓層
請問樓主當時怎么改的呢,現在我也有類似需求,不知道怎么改
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99久久中文字幕三级久久日本 | 久久精品91 | 日本福利在线观看 | 不卡一区二区三区四区 | 成人黄视频在线观看 | 久久亚洲美女 | 91成人在线 | 国产一区二区三区四区 | 亚洲欧美日韩在线一区二区 | 黄色成人在线观看 | 久久婷婷国产 | 中文字幕日韩欧美 | 欧美影院 | 综合久久综合久久 | 第四色播日韩第一页 | 成人无遮挡毛片免费看 | 亚洲精品国产一区 | 成人精品鲁一区一区二区 | 久久久精品网 | 亚洲成人播放器 | 欧美日韩精选 | 国产欧美一区二区三区久久手机版 | 99久热在线精品视频观看 | 久久亚洲一区二区 | 久久久妇女国产精品影视 | 欧美xxxx做受欧美 | 男女下面一进一出网站 | 成人性视频免费网站 | 久久精品亚洲欧美日韩久久 | www.中文字幕av | 欧美视频第二页 | 久久出精品 | 国产欧美在线一区二区 | 国产在线精品一区二区三区 | 久草网在线视频 | 国产精品欧美一区喷水 | 九九精品视频在线 | 精品在线一区二区三区 | 午夜网| 97久久久 | 国产视频二区 |