单片机--key8

    xiaoxiao2022-06-30  55

    我利用独立键盘的key1和key2来控制两个外部中断

    key8.c

    #include "myhead.h" void time1_init(void) { EA = 1; TMOD |= 0x10; TH1 = (65536 - 1000) / 256; TL1 = (65536 - 1000) % 256; ET1 = 1; TR1 = 1; } void time1_isr() interrupt 3 { TH1 = (65536 - 1000) / 256; TL1 = (65536 - 1000) % 256; display(); } void int0_init(void) { EA = 1; IT0 = 1; EX0 = 1; } void int0_isr(void) interrupt 0 { EX0 = 0; if(0 == start) { while(!start); delay_ms(10); while(!start); TR0 = ~TR0; } EX0 = 1; } void int1_init(void) { EA = 1; IT1 = 1; EX1 = 1; } void int1_isr(void) interrupt 2 { EX1 = 0; if(0 == rst) { while(!rst); delay_ms(10); while(!rst); tempdata[0] = 0x3f; tempdata[1] = 0x3f; tempdata[2] = 0x40; tempdata[3] = 0x3f; tempdata[4] = 0x3f; tempdata[5] = 0x40; tempdata[6] = 0x3f; tempdata[7] = 0x3f; hour = 0 ; min = 0; sec = 0; TR0 = 0; } EX1 = 1; } 使用外部中断的时候会用到定时器1,所以定时器1就不能用做时钟的刷新 void key8() { unsigned char flag = 1; unsigned char key; time0_init(); time1_init(); int0_init(); int1_init(); while(flag) { key = key_scan(); if(0xe7 == key) { lcd_over(); flag = 0; PORT = 0xff; } } }

    key8.h

    #ifndef _KRY8_H #define _KEY8_H extern void time1_init(void); extern void time1_isr(); extern void int0_init(void); extern void int0_isr(void); extern void int1_init(void); extern void int1_isr(void); extern void key8(); #endif
    转载请注明原文地址: https://ju.6miu.com/read-1125778.html

    最新回复(0)