wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3091|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

發(fā)個(gè)AT89C2051制作的時(shí)鐘程序+仿真,功能還是很強(qiáng)大的,大家玩得開(kāi)心就好!

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

// so said EVELYN the modified DOG
//#pragma less_pedantic
#define uint8_t unsigned char
#define uint16_t unsigned short int
// Clock related defines
#define CLOCK_TIMER_HIGH                0x3C
#define CLOCK_TIMER_LOW                        0xD5        // original ASM source was 0xB5, but experimentation shows this should be a more accurate value
#define CLOCK_TIMER_COUNT                20
#define CLOCK_COLON_COUNT                10                // 1/2 of CLOCK_TIMER_COUNT
#define CLOCK_BLINK_COUNT                5
#define CLOCK_INCREMENT_COUNT        4

// Button related defines
#define BUTTON_PRESS                        2
#define BUTTON_PRESS_LONG                40

// Display related defines
#define LED_BLANK                        10
#define LED_h                                11
#define LED_A                                12
#define LED_L                                13
#define LED_y                                14
#define LED_n                                15

// digit to led digit lookup table
// 1 = on, 0 = off
// a, f, b, e, d, c, g, dp
const uint8_t ledtable[] = {
        0xFC,        // 0
        0x24,        // 1
        0xBA,        // 2
        0xAE,        // 3
        0x66,        // 4
        0xCE,        // 5
        0xDE,        // 6
        0xA4,        // 7
        0xFE,        // 8
        0xEE,        // 9
        0x00,   // <blank>
        0x56,        // 'h'
        0xF6,   // 'A'
        0x58,        // 'L'
        0x6E,        // 'y'
        0x16,   // 'n'
};

// display buffer
uint8_t dbuf[4];

// clock variables
volatile uint8_t clock_hour = 12;
volatile uint8_t clock_minute = 0;
volatile uint8_t clock_second = 55;
volatile uint8_t next_second = CLOCK_TIMER_COUNT;
volatile uint8_t next_blink = CLOCK_BLINK_COUNT;
volatile uint8_t next_increment = CLOCK_INCREMENT_COUNT;

volatile bit CLOCK_RUNNING = 1;
volatile bit TWELVE_TIME = 0;                        // 0 = 24 hour, 1 = 12 hour

// alarm variables
volatile uint8_t alarm_hour = 12;
volatile uint8_t alarm_minute = 1;
volatile bit ALARM_ENABLE = 1;

// flag to determine whether or not to display the colon (every half second)
// can also be repurposed for blinking numbers during time set
volatile bit show_colon = 0;

// flag when to display a digit (for blinking purposes during set time mode)
volatile bit show_blink = 0;

// flag when to make the next digit increment
// used while holding down the digit increment button during set time mode
volatile bit clock_increment = 0;

// timer variables
volatile uint8_t timer_minute = 0;
volatile uint8_t timer_second = 0;
volatile bit TIMER_RUNNING = 0;

// number of ms between display refresh
//uint8_t display_dimmer = 10;

// button variables
volatile uint8_t debounce[] = {0, 0};
volatile bit B1_PRESSED = 0;
volatile bit B1_RELEASED = 0;
volatile bit B1_PRESSED_LONG = 0;
volatile bit B1_RELEASED_LONG = 0;
volatile bit B2_PRESSED = 0;
volatile bit B2_RELEASED = 0;
volatile bit B2_PRESSED_LONG = 0;
volatile bit B2_RELEASED_LONG = 0;

// clock state
typedef enum {
        NORMAL,
        MIN_SEC,
        EDIT_HOUR,
        EDIT_MIN,
        SET_24H,
        SHOW_ALARM,
        EDIT_ALARM_HOUR,
        EDIT_ALARM_MIN,
        ENABLE_ALARM,
        ALARMING,
        TIMER
} clock_state_t;
clock_state_t clock_state = NORMAL;

// check button status and set appropriate flags
// Bn_PRESSED* flags will be set ONCE PER PRESS. This means software can UNSET these flags if desired.
void button_status(void) {

        // button 1
        if (P3_4 == 0) {
                if (debounce[0] < BUTTON_PRESS_LONG) {
                        debounce[0]++;
                        if (debounce[0] == BUTTON_PRESS) {
                                B1_RELEASED = 0;
                                B1_PRESSED = 1;       
                        }
                        if (debounce[0] == BUTTON_PRESS_LONG) {
                                B1_RELEASED_LONG = 0;
                                B1_PRESSED_LONG = 1;
                        }       
                }
        } else {
                debounce[0] = 0;
                if (B1_PRESSED) {
                        B1_RELEASED = 1;
                }
                B1_PRESSED = 0;
                if (B1_PRESSED_LONG) {
                        B1_RELEASED_LONG = 1;
                }
                B1_PRESSED_LONG = 0;
        }

        // button 2
        if (P3_5 == 0) {
                if (debounce[1] < BUTTON_PRESS_LONG) {
                        debounce[1]++;
                        if (debounce[1] == BUTTON_PRESS) {
                                B2_RELEASED = 0;
                                B2_PRESSED = 1;
                        }
                        if (debounce[1] == BUTTON_PRESS_LONG) {
                                B2_RELEASED_LONG = 0;
                                B2_PRESSED_LONG = 1;
                        }
                }
        } else {
                debounce[1] = 0;
                if (B2_PRESSED) {
                        B2_RELEASED = 1;
                }
                B2_PRESSED = 0;
                if (B2_PRESSED_LONG) {
                        B2_RELEASED_LONG = 1;
                }
                B2_PRESSED_LONG = 0;
        }
}

// timer reset
void timer_reset() {
        timer_minute = 0;
        timer_second = 0;
}

void increment_timer_minute() {
        if (++timer_minute == 60) {
                timer_minute = 0;
                // increment_timer_hour();
        }
}

void increment_timer_second() {
        if (++timer_second == 60) {
                timer_second = 0;
                increment_timer_minute();
        }
}

// increment hour by 1
void increment_hour() {
        if (++clock_hour == 24) {
                clock_hour = 0;
        }
}

// increment minute by 1
void increment_minute() {
        if (++clock_minute == 60) {
                clock_minute = 0;
                if (CLOCK_RUNNING) {
                        increment_hour();
                }
        }
}

// increment second by 1
void increment_second() {
        if (++clock_second == 60) {
                clock_second = 0;
                if (CLOCK_RUNNING) {
                        increment_minute();
                }
        }
        if (TIMER_RUNNING) {
                increment_timer_second();
        }
}

void increment_alarm_hour() {
        if (++alarm_hour == 24) {
                alarm_hour = 0;
        }
}

// increment minute by 1
void increment_alarm_minute() {
        if (++alarm_minute == 60) {
                alarm_minute = 0;
                if (CLOCK_RUNNING) {
                        increment_alarm_hour();
                }
        }
}


/* i feel like i need a time object that i pass to the increment_* functions and current time, alarm, and timer would all be objects of this type.
* but what about RUNNING flag?
* that would have to be part of the object type as well
* ...
* why do the increment_* functions test for clock_running? the thing.... for setting the time/alarm. don't increment if we're in a SET CLOCK mode
* perhaps another flag to add to the clock object, a SET MODE boolean
*
* maybe call the 'running' flag ENABLE; this would be more applicable a word to the alarm state
*/


// Timer0 ISR, used to maintain the time, executes every 50ms
void timer0_isr(void) interrupt 1 using 1 {

        // reset timer
    TL0 = CLOCK_TIMER_LOW;
    TH0 = CLOCK_TIMER_HIGH;

        // is the clock running?
        if (CLOCK_RUNNING) {

                // then keep track of when to increment the seconds
                if (--next_second == 0) {
                        next_second = CLOCK_TIMER_COUNT;
                        show_colon = 1;
                        increment_second();
                } else if (next_second == CLOCK_COLON_COUNT) {
                        show_colon = 0;
                }
        }

        // toggle digit blinking
        if (--next_blink == 0) {
                next_blink = CLOCK_BLINK_COUNT;
                show_blink = !show_blink;
        }

        // control digit increment
        if (--next_increment == 0) {
                next_increment = CLOCK_INCREMENT_COUNT;
                clock_increment = 1;                // flag will be unset by software
        }

        button_status();
}

// execute 500 DJNZ instructions which should equate to 1 millisecond
void delay1ms(void) {
#pragma asm
                MOV R0,#250
                MOV R1,#250
        L_00001:
                DJNZ R0, L_00001
        L_00002:
                DJNZ R1, L_00002
#pragma endasm
}

void delay(uint16_t ms) {
        do {
                delay1ms();
        } while (--ms > 0);
}

// display refresh
void display_update(void) {
        uint8_t digit = 4;
//        static uint8_t display_dimmer_counter = 0;

//        if (display_dimmer_counter == 0) {
//                display_dimmer_counter = display_dimmer;

                // disable all digits
                P3 |= 0x0F;

                for (digit = 0; digit<4; digit++) {
               
                        // enable appropriate segments
                        P1 = dbuf[digit];

                        // enable appropriate digit (set it to 0; leave others 1)
                        P3 &= (~(1 << digit));

                        // delay
                        delay1ms();

                        // disable all digits
                        P3 |= 0x0F;
                }
//        } else {
//                display_dimmer_counter--;
//                delay1ms();
//        }
}

// set the display buffer first and second digits to the current hour
void set_hour_dbuf(uint8_t display_hour) {
        uint8_t hour;

        if (TWELVE_TIME) {
                hour = display_hour % 12;
                if (hour==0) {
                        hour = 12;
                }
        } else {
                hour = display_hour;
        }

        dbuf[0] = ledtable[(hour/10)];
        dbuf[1] = ledtable[(hour%10)];
}

void init(void) {

        // Display initialization
        P1 = 0x00;                        // disable all segments
        P3 |= 0x04;                        // disable all digits

        // Timer0 initialization
        TMOD = 0x01;                        // Set Timer0 to mode 1, 16-bit
        TH0 = CLOCK_TIMER_HIGH;
        TL0 = CLOCK_TIMER_LOW;                // Set counter to 15541, overlfow at 65536, a difference of 49995; about 50 milliseconds per trigger
        PT0 = 1;                        // Giver Timer0 high priority
        ET0 = 1;                        // Enable Timer0 interrupt
        TR0 = 1;                            // Enable Timer0
        EA = 1;                                // Enable global interrupts

        // Other
        P3_7 = 1;                        // disable buzzer
}

void main(void) {

        // initialization routine
        init();

        // main program loop
    while(1) {

                // alarm mode
                if (ALARM_ENABLE && CLOCK_RUNNING && alarm_hour == clock_hour && alarm_minute == clock_minute) {
                        if (clock_second == 0 && clock_state != ALARMING) {
                                clock_state = ALARMING;
                        }
                        if (clock_state == ALARMING) {
                                if (show_colon == 1) {
                                        P3_7 = !P3_7;        // P3_7 = show_colon; (this toggling creates an interesting effect)
                                } else {
                                        P3_7 = 1;        // if doing the toggling effect, need to make sure buzzer is off during blink
                                }
                        }
                } else if (clock_state == ALARMING) {        // turn off the alarm after 1 minute
                        clock_state = NORMAL;
                        P3_7 = 1;                        // turn off the alarm
                }

                // handle button events based on current clock state
                switch (clock_state) {

                        case ALARMING:
                                if (B1_RELEASED || B2_RELEASED) {
                                        clock_state = NORMAL;
                                        P3_7 = 1;                                // turn off alarm
                                        B1_RELEASED = 0;
                                        B2_RELEASED = 0;
                                }
                                break;

                        case EDIT_ALARM_MIN:
                                if (B1_PRESSED) {
                                        clock_state = ENABLE_ALARM;
                                        B1_PRESSED = 0;
                                } else if (B2_PRESSED) {
                                        increment_alarm_minute();
                                        B2_PRESSED = 0;
                                } else if (B2_PRESSED_LONG && clock_increment == 1) {
                                        increment_alarm_minute();
                                        clock_increment = 0;
                                }
                                break;

                        case EDIT_ALARM_HOUR:
                                if (B1_PRESSED) {
                                        clock_state = EDIT_ALARM_MIN;
                                        B1_PRESSED = 0;
                                } else if (B2_PRESSED) {
                                        increment_alarm_hour();
                                        B2_PRESSED = 0;                                       
                                } else if (B2_PRESSED_LONG && clock_increment == 1) {
                                        increment_alarm_hour();
                                        clock_increment = 0;
                                }
                                break;

                        case ENABLE_ALARM:
                                if (B1_PRESSED) {
                                        clock_state = NORMAL;
                                        B1_PRESSED = 0;
                                } else if (B2_PRESSED) {
                                        ALARM_ENABLE = !ALARM_ENABLE;
                                        B2_PRESSED = 0;
                                }
                                break;

                        case SHOW_ALARM:
                                if (B1_PRESSED_LONG) {
                                        clock_state = EDIT_ALARM_HOUR;
                                        B1_PRESSED = 0;
                                        B1_PRESSED_LONG = 0;
                                } else if (B1_RELEASED) {
                                        clock_state = ENABLE_ALARM;
                                        B1_RELEASED = 0;
                                }
                                break;

                        case TIMER:
                                if (B2_RELEASED) {
                                        clock_state = NORMAL;
                                        B2_RELEASED = 0;
                                } else if (B1_PRESSED_LONG) {
                                        timer_reset();
                                        // really need to create some sort of change/state or button clear routine
                                        // otherwise possible to enter TIMER state with B1_PRESSED_LONG set if you push both buttons at the same time.
                                } else if (B1_RELEASED_LONG) {
                                        // a LONG press is a reset, do not toggle the timmer on a LONG press
                                        B1_RELEASED = 0;
                                        B1_RELEASED_LONG = 0;
                                } else if (B1_RELEASED) {
                                        TIMER_RUNNING = !TIMER_RUNNING;        // toggle timer
                                        B1_RELEASED = 0;
                                }
                                break;
       
                        case SET_24H:
                                if (B2_RELEASED) {
                                        clock_state = TIMER;
                                        B2_RELEASED = 0;
                                } else if (B1_RELEASED) {
                                        TWELVE_TIME = !TWELVE_TIME;
                                        B1_RELEASED = 0;
                                }
                                break;

                        case EDIT_MIN:
                                if (B1_PRESSED) {                        // exit edit mode
                                        clock_state = NORMAL;
                                        B1_PRESSED = 0;
                                        CLOCK_RUNNING = 1;
                                } else if (B2_PRESSED) {                // increment minute
                                        increment_minute();
                                        clock_second = 0;                // reset seconds to 0 when time is changed
                                        B2_PRESSED = 0;
                                } else if (B2_PRESSED_LONG && clock_increment == 1) {
                                        increment_minute();                // hold down the button to rapidly increase minute
                                        clock_increment = 0;
                                }
                                break;

                        case EDIT_HOUR:
                                CLOCK_RUNNING = 0;
                                if (B1_PRESSED) {                        // switch to edit minute mode
                                        clock_state = EDIT_MIN;
                                        B1_PRESSED = 0;
                                } else if (B2_PRESSED) {                // increment hour
                                        increment_hour();
                                        clock_second = 0;                // reset seconds to 0 when time is changed
                                        B2_PRESSED = 0;                                       
                                } else if (B2_PRESSED_LONG && clock_increment == 1) {
                                        increment_hour();                // hold down the button to rapidly increase hour
                                        clock_increment = 0;
                                }
                                break;

                        case MIN_SEC:
                                if (B2_RELEASED) {
                                        clock_state = SET_24H;
                                        B2_RELEASED = 0;
                                }
                                break;
                       
                        case NORMAL:
                        default:
                                if (B2_RELEASED) {
                                        clock_state = MIN_SEC;
                                        B2_RELEASED = 0;
                                } else if (B1_PRESSED_LONG) {
                                        clock_state = EDIT_HOUR;
                                        B1_PRESSED = 0;
                                        B1_PRESSED_LONG = 0;
                                } else if (B1_RELEASED) {
                                        clock_state = SHOW_ALARM;
                                        B1_RELEASED = 0;
                                }
                                break;
                }

                // generate display based on current clock state
                // button events and display are separated as state may change during button events
                switch (clock_state) {
                        case ALARMING:
                                if (show_colon == 1) {
                                        set_hour_dbuf(clock_hour);
                                        dbuf[2] = ledtable[(clock_minute/10)];
                                        dbuf[3] = ledtable[(clock_minute%10)];
                                        dbuf[1] |= 1;
                                } else {
                                        dbuf[0] = ledtable[LED_BLANK];
                                        dbuf[1] = ledtable[LED_BLANK];
                                        dbuf[2] = ledtable[LED_BLANK];
                                        dbuf[3] = ledtable[LED_BLANK];
                                }
                                break;

                        case ENABLE_ALARM:
                                dbuf[0] = ledtable[LED_A];
                                dbuf[1] = ledtable[LED_L];
                                dbuf[2] = ledtable[LED_BLANK];
                                if (ALARM_ENABLE) {
                                        dbuf[3] = ledtable[LED_y];
                                } else {
                                        dbuf[3] = ledtable[LED_n];
                                }
                                break;

                        case EDIT_ALARM_MIN:

                                set_hour_dbuf(alarm_hour);
                                if (show_blink == 1) {
                                        dbuf[2] = ledtable[(alarm_minute/10)];
                                        dbuf[3] = ledtable[(alarm_minute%10)];
                                } else {
                                        dbuf[2] = ledtable[LED_BLANK];
                                        dbuf[3] = ledtable[LED_BLANK];
                                }
                                if (!TWELVE_TIME || alarm_hour > 11) {
                                        dbuf[1] |= 1;
                                }
                                break;

                        case EDIT_ALARM_HOUR:

                                if (show_blink == 1) {
                                        set_hour_dbuf(alarm_hour);
                                } else {
                                        dbuf[0] = ledtable[LED_BLANK];
                                        dbuf[1] = ledtable[LED_BLANK];
                                }
                                dbuf[2] = ledtable[(alarm_minute/10)];
                                dbuf[3] = ledtable[(alarm_minute%10)];
                                if (!TWELVE_TIME || alarm_hour > 11) {
                                        dbuf[1] |= 1;
                                }
                                break;

                        case SHOW_ALARM :

                                if (show_colon == 1) {
                                        set_hour_dbuf(alarm_hour);
                                        dbuf[2] = ledtable[(alarm_minute/10)];
                                        dbuf[3] = ledtable[(alarm_minute%10)];
                                        dbuf[1] |= 1;
                                } else {
                                        dbuf[0] = ledtable[LED_BLANK];
                                        dbuf[1] = ledtable[LED_BLANK];
                                        dbuf[2] = ledtable[LED_BLANK];
                                        dbuf[3] = ledtable[LED_BLANK];
                                }
                                break;

                        case TIMER:
                                dbuf[0] = ledtable[(timer_minute/10)];
                                dbuf[1] = ledtable[(timer_minute%10)];
                                dbuf[2] = ledtable[(timer_second/10)];
                                dbuf[3] = ledtable[(timer_second%10)];
                                if (!TIMER_RUNNING || show_colon) {
                                        dbuf[1] |= 1;
                                }
                                break;

                        case SET_24H:

                                if (TWELVE_TIME) {
                                        dbuf[0] = ledtable[1];
                                        dbuf[1] = ledtable[2];
                                } else {
                                        dbuf[0] = ledtable[2];
                                        dbuf[1] = ledtable[4];
                                }
                                dbuf[2] = ledtable[LED_h];
                                dbuf[3] = ledtable[LED_BLANK];
                                break;

                        case EDIT_MIN:

                                set_hour_dbuf(clock_hour);
                                if (show_blink == 1) {
                                        dbuf[2] = ledtable[(clock_minute/10)];
                                        dbuf[3] = ledtable[(clock_minute%10)];
                                } else {
                                        dbuf[2] = ledtable[LED_BLANK];
                                        dbuf[3] = ledtable[LED_BLANK];
                                }

                                // colon does not blink when setting time
                                // in 12 hour format, colon is only on when hour represents PM
                                if (!TWELVE_TIME || clock_hour > 11) {
                                        dbuf[1] |= 1;
                                }

                                break;

                        case EDIT_HOUR:

                                if (show_blink == 1) {
                                        set_hour_dbuf(clock_hour);
                                } else {
                                        dbuf[0] = ledtable[LED_BLANK];
                                        dbuf[1] = ledtable[LED_BLANK];
                                }
                                dbuf[2] = ledtable[(clock_minute/10)];
                                dbuf[3] = ledtable[(clock_minute%10)];

                                // colon does not blink when setting time
                                // in 12 hour format, colon is only on when hour represents PM
                                if (!TWELVE_TIME || clock_hour > 11) {
                                        dbuf[1] |= 1;
                                }

                                break;

                        case MIN_SEC:

                                // update display buffer to show current time
                                dbuf[0] = ledtable[(clock_minute/10)];
                                dbuf[1] = ledtable[(clock_minute%10)];
                                dbuf[2] = ledtable[(clock_second/10)];
                                dbuf[3] = ledtable[(clock_second%10)];

                                // blinking colon
                                if (show_colon == 1) {
                                        dbuf[1] |= 1;
                                }
                                break;

                        case NORMAL:
                        default:

                                // update display buffer to show current time
                                set_hour_dbuf(clock_hour);
                                dbuf[2] = ledtable[(clock_minute/10)];
                                dbuf[3] = ledtable[(clock_minute%10)];

                                // blinking colon
                                if (show_colon == 1) {
                                        dbuf[1] |= 1;
                                }
                                break;
                }

                // update the display
                display_update();
    }
}

新建位圖圖像.jpg (319.56 KB, 下載次數(shù): 90)

新建位圖圖像.jpg

Clock.zip

108.25 KB, 下載次數(shù): 17, 下載積分: 黑幣 -5

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

無(wú)效樓層,該帖已經(jīng)被刪除
板凳
ID:16255 發(fā)表于 2021-1-19 09:54 | 只看該作者
連時(shí)鐘芯片都不用,估計(jì)走時(shí)不太準(zhǔn)確。
回復(fù)

使用道具 舉報(bào)

無(wú)效樓層,該帖已經(jīng)被刪除

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
日本在线视频1区| 亚洲最大综合网| 亚洲精品视频网址| 国产区卡一卡二卡三乱码免费| 欧美激情成人动漫| 国产亚洲精品自拍| 欧美日韩精品欧美日韩精品| 91香蕉亚洲精品| www.88av| 污网站在线观看| 欧美成人一级| 欧美极品xxx| 久久久久久这里只有精品| 日本xxxxxxx免费视频| 亚洲av无码一区二区乱子伦| 在线观看午夜av| 日本亚洲天堂网| 亚洲精品久久久久| 日本男女交配视频| a视频免费在线观看| 3d玉蒲团在线观看| 狠狠色伊人亚洲综合成人| 亚洲人成在线观看| 欧美在线观看成人| 黄色美女一级片| 中文字幕在线视频久| 丁香五精品蜜臀久久久久99网站 | 日韩精品成人在线| 一二三中文字幕在线| 综合激情视频| 欧美精品777| 日韩激情视频| 五月天婷婷导航| 午夜在线视频播放| 免费欧美在线视频| 中文字幕在线精品| 最新国产黄色网址| 在线免费黄网| 欧美日韩播放| 91国模大尺度私拍在线视频| 日韩视频在线播放| 91精品国产综合久| 正在播放日韩精品| 国产欧美日韩视频在线观看| 国产精品揄拍一区二区| 天海翼在线视频| 婷婷国产在线| 日日欢夜夜爽一区| 色黄久久久久久| 男男受被啪到高潮自述| 免费网站你懂的| 久久亚洲影视| 欧美成人a在线| 无码专区aaaaaa免费视频| 亚洲经典一区二区| 国产美女久久| 一区二区三区免费网站| 国产呦系列欧美呦日韩呦| 秋霞精品一区二区三区| tube8在线hd| 国产欧美日韩中文久久| 91九色偷拍| 五月天婷婷激情| 9999精品成人免费毛片在线看| 久久久午夜精品| 亚洲在线www| www.久久久久久久| 中文不卡1区2区3区| 中文字幕一区二区三中文字幕| 不卡的av一区| 亚洲va在线观看| av日韩电影| 亚洲女同女同女同女同女同69| 国产成人女人毛片视频在线| 成人a v视频| 亚洲人成午夜免电影费观看| 亚洲视频1区2区| 久久精品第九区免费观看| 一区二区乱子伦在线播放| 日韩av中字| 亚洲在线观看免费视频| 涩涩日韩在线| 天堂在线视频观看| 久久国产精品色av免费看| 欧美精选午夜久久久乱码6080| 国产精品久久中文字幕| 国产91九色蝌蚪| 亚洲91视频| 国产一区二区三区毛片| 四虎精品一区二区| 在线播放av网站| 福利视频网站一区二区三区| 成人欧美一区二区三区在线| 日韩黄色一级视频| 国产精品99精品一区二区三区∴| 精品人伦一区二区三区蜜桃网站| 成年人视频大全| 国产麻豆永久视频| 国产精品大片| 欧美激情在线一区| 国产高清在线免费观看| 7777kkk亚洲综合欧美网站| 亚洲精品高清在线观看| 手机看片日韩国产| 国产福利免费观看| 亚洲国产黄色| 国内精品视频久久| 国产精品suv一区二区| 欧美gv在线| 一本一道综合狠狠老| 国产aaa一级片| 先锋成人影音| 九九热在线视频观看这里只有精品| 国产精品精品久久久| 夜夜躁日日躁狠狠久久av| 久久久久九九精品影院| 日韩欧美国产不卡| 天天躁日日躁狠狠躁av麻豆男男| 韩国三级在线观看久| 欧美—级在线免费片| 亚洲综合网中心| 国产二区视频| 日日嗨av一区二区三区四区| 国产免费一区二区三区在线能观看| 在线视频播放大全| 亚洲另类春色校园小说| 亚洲区中文字幕| 国产精品酒店视频| 麻豆成全视频免费观看在线看| 精品久久久久久国产91| 已婚少妇美妙人妻系列| 传媒av在线| 久久久精品国产免费观看同学| 亚洲国产成人不卡| 天堂在线免费观看| 老汉av免费一区二区三区| 成人在线观看网址| 四虎影视最新网站入口在线观看| 欧美91大片| 2019国产精品自在线拍国产不卡| 一区二区乱子伦在线播放| 日韩系列在线| 久久在线精品视频| 黑人一级大毛片| 老牛精品亚洲成av人片| 色偷偷偷亚洲综合网另类| 国产一级做a爱免费视频| 国产一区精品福利| 亚洲国产免费av| 三级黄色在线观看| 亚洲精品伦理| 亚洲欧美激情视频| 久久亚洲成人av| 精品一级视频| 在线看福利67194| 日韩高清精品免费观看| 高清日韩欧美| 久久久www成人免费精品| 久久一区二区三区视频| 亚洲系列另类av| 欧美激情视频在线观看| 国产精品自偷自拍| 欧美99在线视频观看| 国产精品尤物福利片在线观看| 亚洲成人电视网| 久久成人一区| 极品尤物一区二区三区| 国产成人精品综合网站| 国产成人av电影在线| 91香蕉视频网址| 毛片视频免费| 亚洲丝袜美腿综合| 欧美性受xxxxxx黑人xyx性爽| 日韩大片在线永久免费观看网站| 欧美日韩一区二区三区| 老司机午夜免费福利| 中文字幕在线高清| 亚洲男子天堂网| www..com国产| 精品久久成人| 日本国产高清不卡| av资源中文色综合| 久久国产精品一区二区| 亚洲乱码国产乱码精品天美传媒| 91福利免费在线| 亚洲欧美一区二区在线观看| 污版视频在线观看| 波多野结衣在线播放| 欧美成人r级一区二区三区| 欧美日韩亚洲国产另类| 亚洲人成网www| 国产ts一区二区| 手机看片日韩| 成人妖精视频yjsp地址| 久久久久久www| 成人在线观看网站| 欧美午夜片在线看| 亚洲 欧美 变态 另类 综合| 久久99精品国产自在现线| 午夜精品在线观看| 香港一级纯黄大片| 国内不卡的二区三区中文字幕| 中日韩在线视频| 青青视频在线观| 在线看国产日韩| 国产91在线播放九色| 欧美大片网址| 国产精品成人播放| 一个人免费播放在线视频看片| 久久久久一区二区三区四区| 亚洲免费黄色网| 三级成人黄色影院| 久久影院模特热| 天天色综合久久| 韩国av一区二区三区四区| 国产精品久久久久久久久电影网| 91精品专区| 精品1区2区在线观看| 日韩三级一区二区| 在线亚洲观看| gogogo免费高清日本写真| 免费av在线电影| 91精品欧美久久久久久动漫| 欧美一级视频免费观看| 国产一区亚洲| 日韩三级在线播放| 精品乱码一区二区三四区视频| 欧美嫩在线观看| 欧美一二三区视频| 亚洲精品少妇| 中文字幕一区二区三区有限公司| 国产毛片在线看| 日韩美女在线视频 | 青青草精品在线| 免费一级欧美在线观看视频| 午夜精品久久17c| 国产日韩网站| 1024国产精品| 我不卡一区二区| 精品美女久久久| 国产一区二区三区高清| 领导边摸边吃奶边做爽在线观看| 在线精品视频一区二区| 欧美一二三区视频| 水野朝阳av一区二区三区| 欧美一级免费播放| 成人影院网站| 97成人精品区在线播放| 日本免费网址| 欧美日韩国产精品| 国产香蕉在线视频| 欧美亚洲免费| 国产乱子伦农村叉叉叉| 欧美××××黑人××性爽| 97视频在线观看免费高清完整版在线观看| 国产又爽又黄又刺激的软件| 亚洲色图19p| 麻豆一区在线观看| 国产精品s色| 久久亚洲a v| 亚洲一二三四| 奇米影视亚洲狠狠色| 成人在色线视频在线观看免费大全 | 天堂av在线网站| 欧美aaaaaa| 成人动漫网站在线观看| 亚洲一本大道| 日韩免费高清视频| 亚洲免费黄色片| 久久天天做天天爱综合色| 亚洲AV无码国产精品| 久久美女视频| 熟女视频一区二区三区| 理论片午夜视频在线观看| 欧美中文在线观看| jizzjizzji欧美| 日韩精品一区在线观看| 成人免费视频国产| 国产精品免费av| 丝袜 亚洲 另类 欧美 重口| 性一交一乱一区二区洋洋av| 日本精品久久久久中文字幕| 久久天堂久久| 国产伦精品一区二区三区免费视频 | 欧美性猛交xxxx免费看久久久| 日本道在线观看| 国产乱淫av一区二区三区 | 免费拍拍拍网站| 久久免费影院| 99se婷婷在线视频观看| 在线观看免费网站黄| 久久久精品视频成人| 日本夜夜草视频网站| 欧美日韩国产在线播放网站| 国产高清第一页| 中文字幕第一区第二区| 全网免费在线播放视频入口 | 91精品久久久久久久99蜜桃 | www国产精品av| 欧美性猛交xxxx乱大交少妇| 午夜在线一区| 日韩av自拍偷拍| 成人aaaa| 可以在线看的av网站| 57pao国产一区二区| 日本一区二区三区视频免费看| av蜜臀在线| 成人国产精品免费视频| av黄色在线观看| 午夜免费久久久久| 欧美著名女优| 俺去了亚洲欧美日韩| 天天舔夜夜操| 亚洲第一国产精品| 亚洲日本中文字幕在线| 天天色 色综合| 国产黄色一区二区| 一区二区三区在线不卡| 波多野结衣电车| 欧美国产成人在线| 日本五十熟hd丰满| 99免费精品视频| 欧美黄色免费看| 成人高清免费观看| 男的操女的网站| 成人午夜视频网站| 欧美黑吊大战白妞| 成人av免费网站| 成年人av电影| 成人91在线观看| 91porn在线视频| 波多野结衣中文一区| 久久国产在线观看| 99re亚洲国产精品| 日韩精品视频播放| 国产免费久久精品| 国产精品国产精品国产| 亚洲女与黑人做爰| www.色播.com| 色系网站成人免费| 蜜桃色永久入口| 91精品啪在线观看国产60岁| 国产在线视频自拍| 亚洲成人999| jizzjizzjizz中国| 亚洲少妇中文在线| 黄色毛片av| 久久久久久久999精品视频| 国产永久免费高清在线观看视频| 国产91在线播放九色快色| 在线观看黄av| 亚洲free嫩bbb| 日韩深夜视频| 任我爽在线视频精品一| 国产成人视屏| 黄色一级片黄色| 久久精品av| 中国老熟女重囗味hdxx| 日韩精品久久理论片| 极品尤物一区二区| 91麻豆6部合集magnet| 天干夜夜爽爽日日日日| 亚洲欧美精品午睡沙发| 亚洲欧美黄色片| 欧美日韩亚洲综合一区| 岳张嘴把我的精子吞下去| 国产一区二区av| 伊人中文在线| 国产精品人人做人人爽| 国产精品25p| 青青草久久网络| 加勒比视频一区| 99草草国产熟女视频在线| 亚洲麻豆视频| 久久久久人妻一区精品色| 久久蜜桃av一区二区天堂| 亚洲一区二区三区网站| 色欧美日韩亚洲| 99久久免费精品国产免费| 中文字幕日韩综合av| 蜜桃视频在线入口www| 51精品国产| 日韩欧美一区二区三区久久| 精品久久久久久久久中文字幕| 欧洲精品久久| jizz日本免费| 麻豆91在线看| 欧美a级免费视频| 欧美一区二区三区高清视频| 亚洲涩涩在线观看| 日本欧美久久久久免费播放网| 欧产日产国产v| 亚洲日本青草视频在线怡红院| 色一情一乱一区二区三区| 亚洲二区在线播放视频| 又黄又爽无遮挡| 国产精品自拍偷拍| 啪啪av大全导航福利综合导航| 99999精品视频| 日本网站在线观看一区二区三区|