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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

這個單片機程序怎么樣能加快計數到20或者10?

[復制鏈接]
跳轉到指定樓層
樓主
ID:712295 發(fā)表于 2020-11-4 10:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <REGX51.H>
#include <math.H>

#define FOSC 12000000L
#define T1MS (65536-FOSC/12/1000*10)   //10ms timer calculation method in 12T mode
#define PI 3.1415926   
#define On        0
#define Off        1


void Timer0_Init(void);
void LEDBlink(void);
unsigned int KeyScan(void);
#define LEDPORT P1
#define dx        (PI*2/100)
#define PWM_PERIOD        100
#define LEDNUM         8

sbit LED0 = P1^0;
sbit LED1 = P1^1;
sbit LED2 = P1^2;
sbit LED3 = P1^3;
sbit LED4 = P1^4;
sbit LED5 = P1^5;
sbit LED6 = P1^6;
sbit LED7 = P1^7;

sbit KEY1 = P2^0;
sbit KEY2 = P2^1;
unsigned char led_tab[8] = {
0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F};

unsigned int TimeTikTok = 0;
unsigned int TimeBase = 0;
void main(void)
{
        unsigned int i = 0;
        unsigned int keycount = 0;
        double x = 0.0;
        Timer0_Init();
        while(1)
        {        
                        if (TimeBase) 只有為1的時候會繼續(xù)
                        {
                                TimeBase = 0;     
                                TimeTikTok ++;if(TimeTikTok > 60000) TimeTikTok = 0;   
                                
                                if(! (TimeTikTok % 10)) //100ms      //怎么樣能夠加快計數到10
                                {
                                                //LEDBlink();
                                }        

                                if(! (TimeTikTok % 20)) //200ms    //怎么樣能加快計數到20
                                {
                                                if(KeyScan() == 1)   
                                                        LED0 ^=1 ;
                                                if(KeyScan() == 2)  
                                                        LED1 ^=1 ;
                                }        
                                
                        }
                }

}

void Timer0_Init(void)
{
    TMOD = 0x01;                    //set timer0 as mode1 (16-bit)
    TL0 = T1MS;                     //initial timer0 low byte
    TH0 = T1MS >> 8;                //initial timer0 high byte
    TR0 = 1;                        //timer0 start running
    ET0 = 1;                        //enable timer0 interrupt
    EA = 1;                         //open global interrupt switch
}
        //LEDPORT |= (0X01<<LEDX);
//unsigned int LEDX,unsigned int delay
void LEDBlink(void)
{
        static int statue = 0;
        
        switch (statue)
        {
                case 0:         LEDPORT = 0xFE;                statue = 1;                break;
                case 1:          LEDPORT = 0XFD;                statue = 2;          break;
                case 2:         LEDPORT = 0XFB;                statue = 3;                break;
                case 3:          LEDPORT = 0XF7;                statue = 4;          break;
                case 4:         LEDPORT = 0XEF;                statue = 5;                break;
                case 5:          LEDPORT = 0XDF;                statue = 6;          break;
                case 6:         LEDPORT = 0XBF;                statue = 7;                break;
                case 7:          LEDPORT = 0X7F;                statue = 0;          break;
        }
}

unsigned int KeyScan(void)
{
                static int statue = 0;
                unsigned int keyVal = 0;
                switch (statue)
                {
                                case 0:   statue = 1;                break;
                          case 1:
                                {
                                                if(!KEY1)          等價于KEY1=0                                                        keyVal = 1;
                                                if(!KEY2)                                                                keyVal = 2;        
                                                if((!KEY1) && (!KEY2))        keyVal = 3;                                       
                                                statue = 2;          break;
                                }         
                                case 2:         statue = 0;                break;
                }
                return keyVal;
}
/* Timer0 interrupt routine */
//unsigned int PWM_CHANGE_cnt = 0;
void TM0_isr() interrupt 1
{
               
    TL0 = T1MS;                     //reload timer0 low byte
    TH0 = T1MS >> 8;                //reload timer0 high byte
                TimeBase = 1;               

}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:654028 發(fā)表于 2020-11-4 14:29 | 只看該作者
你把進定時器中斷時間改小一點不就好了
回復

使用道具 舉報

板凳
ID:416287 發(fā)表于 2020-11-4 14:42 | 只看該作者
減少你進中斷的時間 T1MS (65536-FOSC/12/1000*10)  
回復

使用道具 舉報

地板
ID:311846 發(fā)表于 2020-11-4 16:51 | 只看該作者
你這是別人寫的吧!
void main(void)
{
        unsigned int i = 0;
        unsigned int keycount = 0;
        double x = 0.0;
        Timer0_Init();
        while(1)
        {        
                        if (TimeBase) 只有為1的時候會繼續(xù)
                        {
                                TimeBase = 0;     

                                TimeTikTok ++;if(TimeTikTok > 60000) TimeTikTok = 0;   
                                
                               // if(! (TimeTikTok % 10)) //100ms      //怎么樣能夠加快計數到10
                                //{
                                                //直接寫你的10ms的程序就好了,看程序應該是定時10ms的
                                                //LEDBlink();
                               // }        

                                if(! (TimeTikTok % 2)) //20ms    //20個計數為200ms那么2個計數即為20ms
                                {
                                                if(KeyScan() == 1)   
                                                        LED0 ^=1 ;
                                                if(KeyScan() == 2)  
                                                        LED1 ^=1 ;
                                }        
                                
                        }
                }

}
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲视频自拍 | 国外成人在线视频网站 | 天天摸天天干 | 亚洲天堂av在线 | 爱草视频 | 激情 婷婷 | 久干网 | 在线免费观看毛片 | 欧美成人一区二区 | 中文天堂在线一区 | 91免费观看视频 | 国产乱码精品一区二区三区中文 | 亚洲二区视频 | 日韩av在线中文字幕 | 日本精品一区二区三区在线观看 | 中文字幕亚洲欧美日韩在线不卡 | 久久久人成影片一区二区三区 | 久久之精品 | 成人不卡一区二区 | 国产免费播放视频 | 美女久久久久久久久 | 久久综合久色欧美综合狠狠 | 欧美aⅴ片| 亚洲日韩中文字幕一区 | 99re6在线 | 涩涩视频在线观看免费 | 欧美乱码精品一区二区三区 | 欧美黑人一区二区三区 | 中文字幕日韩欧美一区二区三区 | 午夜影视网 | 色综合99 | 亚洲图片一区二区三区 | 国产精品日日做人人爱 | 国产在线一区观看 | 日本三级做a全过程在线观看 | 国产精品久久国产精品99 gif | 99精品国产一区二区三区 | 亚洲精品一区二三区不卡 | 91免费在线看 | 日韩中文字幕在线观看视频 | 欧美亚洲国产日韩 |