📄 main.c
字号:
//----------------------------------------------------------------------------
// C main line
//----------------------------------------------------------------------------
#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#pragma interrupt_handler Timer8
#pragma interrupt_handler Keyscan
#pragma interrupt_handler Timer16
#define LED1 0B11111110
#define LED2 0B11111101
#define LED3 0B11111011
#define LED4 0B11110111
#define SELECT PRT4DR
#define DATA PRT3DR
BYTE NUM[17] = {0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0x11,0xc1,0x63,0x85,0x61,0x71,0xff};
WORD weishu = 1 , gewei = 0 , shiwei = 0 , baiwei = 0 , qianwei = 0 , count = 0 ;
BYTE key = 0 , key1 = 0 , key2 = 0 , key3 = 0 , key4 = 0 , temp = 0 ;
BYTE times = 0 ;
BYTE time = 0 ;
void Display()
{
switch( weishu )
{
case 1 :
if( (count/200) % 2 == 0 )
{
SELECT = LED4 ;
DATA = NUM[gewei] ;
break ;
}
case 2 :
SELECT = LED3 ;
DATA = NUM[shiwei] ;
break ;
case 3 :
SELECT = LED2 ;
DATA = NUM[baiwei] & 0B11111110 ;
break ;
case 4 :
SELECT = LED1 ;
DATA = NUM[qianwei] ;
break ;
default :
break ;
}
weishu ++ ;
if( weishu == 5 )
weishu = 0 ;
}
void Display_Key()
{
count ++ ;
if( (count/200) % 2 == 0 && times != 0 )
{
switch( weishu )
{
case 1 :
SELECT = LED4 ;
DATA = NUM[key1] ;
break ;
case 2 :
SELECT = LED3 ;
DATA = NUM[key2] ;
break ;
case 3 :
SELECT = LED2 ;
DATA = NUM[key3] & 0B11111110 ;
break ;
case 4 :
SELECT = LED1 ;
DATA = NUM[key4] ;
break ;
default :
break ;
}
}
else
{
qianwei = key1 ;
baiwei = key2 ;
shiwei = key3 ;
gewei = key4 ;
Timer16_Stop() ;
count = 0 ;
Timer8_Start() ;
}
}
void Timer8()
{
count ++ ;
if( count == 24000 )
{
gewei ++ ;
if( gewei == 10 )
{
gewei = 0 ;
shiwei ++ ;
if( shiwei == 6 )
{
shiwei = 0 ;
baiwei ++ ;
if( baiwei == 10 )
{
baiwei = 0 ;
qianwei ++ ;
if( qianwei == 6 )
{
qianwei = 0 ;
baiwei = 0 ;
shiwei = 0 ;
gewei = 0 ;
}
}
}
}
count = 0 ;
}
Display() ;
}
void Timer16()
{
Display_Key() ;
if( times = 5 )
times = 0 ;
}
void Keyscan()
{
PRT5DR = 0b11111110 ;
temp = PRT5DR & 0xF0 ;
if( temp != 0xF0 )
{
switch(temp)
{
case 0b11100000 :
key = 0 ; break ;
case 0b11010000 :
key = 1 ; break ;
case 0b10110000 :
key = 4 ; break ;
case 0b01110000 :
key = 7 ; break ;
}
}
PRT5DR = 0b11111101 ;
temp = PRT5DR & 0xF0 ;
if( temp != 0xF0 )
{
switch(temp)
{
case 0b11100000 :
key = 10 ; break ;
case 0b11010000 :
key = 2 ; break ;
case 0b10110000 :
key = 5 ; break ;
case 0b01110000 :
key = 8 ; break ;
}
}
PRT5DR = 0b11111011 ;
temp = PRT5DR & 0xF0 ;
if( temp != 0xF0 )
{
switch(temp)
{
case 0b11100000 :
key = 11 ; break ;
case 0b11010000 :
key = 3 ; break ;
case 0b10110000 :
key = 6 ; break ;
case 0b01110000 :
key = 9 ; break ;
}
}
PRT5DR = 0xF0 ;
if( key = 10 )
{
times ++ ;
Timer8_Stop() ;
}
if( key = 11 )
{
time = ~time ;
if( time )
{
Timer8_Stop() ;
while(1)
{
Display();
}
}
else
Timer8_Start() ;
}
else if( key > 0 && key < 10 )
{
times ++ ;
if( times == 2 )
key1 = key ;
else if( times == 3 )
key2 = key ;
else if( times == 4 )
key3 = key ;
else if( times == 5 )
{
key4 = key ;
key = 0 ;
}
}
count = 0 ;
Timer16_Start() ;
weishu = 1 ;
}
void main()
{
// Insert your main routine code here.
M8C_EnableGInt ;
Timer8_EnableInt() ;
Timer16_EnableInt() ;
Timer8_Start() ;
while(1)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -