欢迎访问
在示波器上显示时钟(汇编部分),本人独创,全球仅有
(作者置顶)
.define intc 7011h
.define p0 7000h
.define p0d 7002h
.define p0a 7003h
.define sec 0700h
.define min 0701h
.define hour 0702h
.text
.public _IRQ5
_IRQ5:
push r2 to [sp]
sec_plus:
r2=[sec]
cmp r2,59
je min_plus
cmp r2,119
je min_plus
cmp r2,179
je min_plus
cmp r2,239
je sec_clr
r2+=1
[sec]=r2
goto last
sec_clr:
r2=0
[sec]=r2
jmp min_plusii
min_plus:
r2+=1
[sec]=r2
min_plusii:
r2=[min]
cmp r2,11
je hour_plus
cmp r2,23
je hour_plus
cmp r2,35
je hour_plus
cmp r2,47
je hour_plus
cmp r2,59
je hour_plus
cmp r2,71
je hour_plus
cmp r2,83
je hour_plus
cmp r2,95
je hour_plus
cmp r2,107
je hour_plus
cmp r2,119
je hour_plus
cmp r2,131
je hour_plus
cmp r2,143
je hour_plus
cmp r2,155
je hour_plus
cmp r2,167
je hour_plus
cmp r2,179
je hour_plus
cmp r2,191
je hour_plus
cmp r2,203
je hour_plus
cmp r2,215
je hour_plus
cmp r2,227
je hour_plus
cmp r2,239
je min_clr
r2+=1
[min]=r2
jmp last
min_clr:
r2=0
[min]=r2
jmp hour_plusii
hour_plus:
r2+=1
[min]=r2
hour_plusii:
r2=[hour]
cmp r2,239
je hour_clr
r2+=1
[hour]=r2
jmp last
hour_clr:
r2=0
[hour]=r2
last:
r2=8h
[intc]=r2
pop r2 from [sp]
reti
示波器上显示时钟(C部分),本人独创,全球仅有
(作者置顶)
unsigned int *p0=(unsigned int *)(0x7000);
unsigned int *p0d=(unsigned int *)(0x7002);
unsigned int *p0a=(unsigned int *)(0x7003);
unsigned int *tbu=(unsigned int *)(0x700E);
unsigned int *oscu=(unsigned int *)(0x7013);
unsigned int *dau=(unsigned int *)(0x702a);
unsigned int *da0=(unsigned int *)(0x7017);
unsigned int *da1=(unsigned int *)(0x7016);
unsigned int *wdogc=(unsigned int *)(0x7012);
unsigned int *intu=(unsigned int *)(0x7010);
unsigned int *intc=(unsigned int *)(0x7011);
unsigned int *sec=(unsigned int *)(0x0700);
unsigned int *min=(unsigned int *)(0x0701);
unsigned int *hour=(unsigned int *)(0x0702);
unsigned int key_num,key_mode,key_have,key_plus,fast,min_flash,hour_flash;
unsigned int bufx,bufy;
const unsigned int Timex[404]={
0x8000,0x8000,0x8180,0x8180,0x8180,0x8180,0x8180,0x8180,0x8180,0x8180,0x8300,0x8600,0x8600,0x8600,0x8600,0x8780,0x8780,0x8780,0x8900,0x8900,0x8900,0x8A80,0x8A80,0x8A80,0x8C00,0x8C00,0x8C00,
0x8000,0x8000,0x8000,0x8000,0x835A,0x86B3,0x8A0B,0x8CC1,0x8D61,0x90B5,0x9406,0x9753,0x995D,0x9A9D,0x9DE1,0xA121,0xA45A,0xA5B3,0xA78E,0xAABA,0xADDF,0xB0FC,0xB19F,0xB410,0xB71B,0xBA1C,0xBD13,
0xC000,0xBE80,0xBD00,0xBB80,0xC2E1,0xC5B6,0xC880,0xC7B6,0xCB3C,0xCDEC,0xD08D,0xD321,0xD1A2,0xD5A6,0xD81C,0xDA82,0xDCD9,0xDAAA,0xDF1F,0xE155,0xE379,0xE58C,0xE2B3,0xE78D,0xE97D,0xEB59,0xED23,
0xEED9,0xEC41,0xE9A8,0xE70E,0xF07D,0xF20C,0xF387,0xEF74,0xF4EF,0xF641,0xF77F,0xF8A8,0xF407,0xF9BC,0xFABA,0xFBA3,0xFC76,0xF756,0xFD33,0xFDDB,0xFE6C,0xFEE7,0xF955,0xFF4C,0xFF9A,0xFFD3,0xFFF4,
0xE800,0xE800,0xEA00,0xEA00,0xEC00,0xEC00,0xEC00,0xEE00,0xEE00,0xEE00,0xF000,0xF000,0xF000,0xF000,0xF000,
0xFFFF,0xFD00,0xFA00,0xF700,0xFFF4,0xFFD3,0xFF9A,0xF955,0xFF4C,0xFEE7,0xFE6C,0xFDDB,0xF756,0xFD33,0xFC76,0xFBA3,0xFABA,0xF407,0xF9BC,0xF8A8,0xF77F,0xF641,0xEF74,0xF4EF,0xF387,0xF20C,0xF07D,
0xEED9,0xEC41,0xE9A8,0xE70E,0xED23,0xEB59,0xE97D,0xE2B3,0xE78D,0xE58C,0xE379,0xE155,0xDAAA,0xDF1F,0xDCD9,0xDA82,0xD81C,0xD1A2,0xD5A6,0xD321,0xD08D,0xCDEC,0xC7B6,0xCB3C,0xC880,0xC5B6,0xC2E1,
0xC000,0xBE80,0xBD00,0xBB80,0xBD13,0xBA1C,0xB71B,0xB19F,0xB410,0xB0FC,0xADDF,0xAABA,0xA5B3,0xA78E,0xA45A,0xA121,0x9DE1,0x995D,0x9A9D,0x9753,0x9406,0x90B5,0x8CC1,0x8D61,0x8A0B,0x86B3,0x835A,
0x8000,0x8000,0x8000,0x8000,0x8000,0x8000,0x8200,0x8200,0x8200,0x8400,0x8400,0x8400,0x8600,0x8600,0x8600,0x8800,0x8800,0x8800,0x8800,
0x8000,0x8000,0x8000,0x8000,0x7CA6,0x794D,0x75F5,0x733F,0x729F,0x6F4B,0x6BFA,0x68AD,0x66A3,0x6563,0x621F,0x5EDF,0x5BA6,0x5A4D,0x5872,0x5546,0x5221,0x4F04,0x4E61,0x4BF0,0x48E5,0x45E4,0x42ED,
0x4000,0x4180,0x4300,0x4480,0x3D1F,0x3A4A,0x3780,0x384A,0x34C4,0x3214,0x2F73,0x2CDF,0x2E5E,0x2A5A,0x27E4,0x257E,0x2327,0x2556,0x20E1,0x1EAB,0x1C87,0x1A74,0x1D4D,0x1873,0x1683,0x14A7,0x12DD,
0x1127,0x13BF,0x1658,0x18F2,0x0F83,0x0DF4,0x0C79,0x108C,0x0B11,0x09BF,0x0881,0x0758,0x0BF9,0x0644,0x0546,0x045D,0x038A,0x08AA,0x02CD,0x0225,0x0194,0x0119,0x06AB,0x00B4,0x0066,0x002D,0x000C,
0x1000,0x1000,0x1000,0x1000,0x1200,0x1200,0x1200,0x1400,0x1400,0x1400,0x1600,0x1600,0x1600,0x1800,0x1800,0x1800,0x1800,0x1800,0x1800,
0x0001,0x0300,0x0600,0x0900,0x000C,0x002D,0x0066,0x06AB,0x00B4,0x0119,0x0194,0x0225,0x08AA,0x02CD,0x038A,0x045D,0x0546,0x0BF9,0x0644,0x0758,0x0881,0x09BF,0x108C,0x0B11,0x0C79,0x0DF4,0x0F83,
0x1127,0x13BF,0x1658,0x18F2,0x12DD,0x14A7,0x1683,0x1D4D,0x1873,0x1A74,0x1C87,0x1EAB,0x2556,0x20E1,0x2327,0x257E,0x27E4,0x2E5E,0x2A5A,0x2CDF,0x2F73,0x3214,0x384A,0x34C4,0x3780,0x3A4A,0x3D1F,
0x4000,0x4180,0x4300,0x4480,0x42ED,0x45E4,0x48E5,0x4E61,0x4BF0,0x4F04,0x5221,0x5546,0x5A4D,0x5872,0x5BA6,0x5EDF,0x621F,0x66A3,0x6563,0x68AD,0x6BFA,0x6F4B,0x733F,0x729F,0x75F5,0x794D,0x7CA6
};
const unsigned int Timey[404]={
0xE200,0xEE00,0xE200,0xE400,0xE600,0xE800,0xEA00,0xEC00,0xEE00,0xF000,0xE200,0xE200,0xE400,0xEC00,0xEE00,0xE200,0xE600,0xF000,0xE200,0xE800,0xF000,0xE200,0xEA00,0xF000,0xE200,0xEC00,0xEE00,
0xFFFF,0xFD00,0xFA00,0xF700,0xFFF4,0xFFD3,0xFF9A,0xF955,0xFF4C,0xFEE7,0xFE6C,0xFDDB,0xF756,0xFD33,0xFC76,0xFBA3,0xFABA,0xF407,0xF9BC,0xF8A8,0xF77F,0xF641,0xEF74,0xF4EF,0xF387,0xF20C,0xF07D,
0xEED9,0xEC41,0xE9A8,0xE70E,0xED23,0xEB59,0xE97D,0xE2B3,0xE78D,0xE58C,0xE379,0xE155,0xDAAA,0xDF1F,0xDCD9,0xDA82,0xD81C,0xD1A2,0xD5A6,0xD321,0xD08D,0xCDEC,0xC7B6,0xCB3C,0xC880,0xC5B6,0xC2E1,
0xC000,0xBE80,0xBD00,0xBB80,0xBD13,0xBA1C,0xB71B,0xB19F,0xB410,0xB0FC,0xADDF,0xAABA,0xA5B3,0xA78E,0xA45A,0xA121,0x9DE1,0x995D,0x9A9D,0x9753,0x9406,0x90B5,0x8CC1,0x8D61,0x8A0B,0x86B3,0x835A,
0x7E00,0x8800,0x7C00,0x8A00,0x7C00,0x8400,0x8A00,0x7C00,0x8400,0x8A00,0x7E00,0x8000,0x8200,0x8600,0x8800,
0x8000,0x8000,0x8000,0x8000,0x7CA6,0x794D,0x75F5,0x733F,0x729F,0x6F4B,0x6BFA,0x68AD,0x66A3,0x6563,0x621F,0x5EDF,0x5BA6,0x5A4D,0x5872,0x5546,0x5221,0x4F04,0x4E61,0x4BF0,0x48E5,0x45E4,0x42ED,
0x4000,0x4180,0x4300,0x4480,0x3D1F,0x3A4A,0x3780,0x384A,0x34C4,0x3214,0x2F73,0x2CDF,0x2E5E,0x2A5A,0x27E4,0x257E,0x2327,0x2556,0x20E1,0x1EAB,0x1C87,0x1A74,0x1D4D,0x1873,0x1683,0x14A7,0x12DD,
0x1127,0x13BF,0x1658,0x18F2,0x0F83,0x0DF4,0x0C79,0x108C,0x0B11,0x09BF,0x0881,0x0758,0x0BF9,0x0644,0x0546,0x045D,0x038A,0x08AA,0x02CD,0x0225,0x0194,0x0119,0x06AB,0x00B4,0x0066,0x002D,0x000C,
0x1200,0x1400,0x1600,0x1800,0x1A00,0x1C00,0x1000,0x1800,0x1E00,0x1000,0x1800,0x1E00,0x1000,0x1800,0x1E00,0x1200,0x1400,0x1600,0x1800,
0x0001,0x0300,0x0600,0x0900,0x000C,0x002D,0x0066,0x06AB,0x00B4,0x0119,0x0194,0x0225,0x08AA,0x02CD,0x038A,0x045D,0x0546,0x0BF9,0x0644,0x0758,0x0881,0x09BF,0x108C,0x0B11,0x0C79,0x0DF4,0x0F83,
0x1127,0x13BF,0x1658,0x18F2,0x12DD,0x14A7,0x1683,0x1D4D,0x1873,0x1A74,0x1C87,0x1EAB,0x2556,0x20E1,0x2327,0x257E,0x27E4,0x2E5E,0x2A5A,0x2CDF,0x2F73,0x3214,0x384A,0x34C4,0x3780,0x3A4A,0x3D1F,
0x4000,0x4180,0x4300,0x4480,0x42ED,0x45E4,0x48E5,0x4E61,0x4BF0,0x4F04,0x5221,0x5546,0x5A4D,0x5872,0x5BA6,0x5EDF,0x621F,0x66A3,0x6563,0x68AD,0x6BFA,0x6F4B,0x733F,0x729F,0x75F5,0x794D,0x7CA6,
&nbs; 0x7D00,0x8300,0x8500,0x8700,0x7B00,0x8100,0x8900,0x7B00,0x8100,0x8900,0x7B00,0x8100,0x8900,0x7D00,0x7F00,0x8100,0x8300,0x8500,0x8700,
0x8000,0x8000,0x8000,0x8000,0x835A,0x86B3,0x8A0B,0x8CC1,0x8D61,0x90B5,0x9406,0x9753,0x995D,0x9A9D,0x9DE1,0xA121,0xA45A,0xA5B3,0xA78E,0xAABA,0xADDF,0xB0FC,0xB19F,0xB410,0xB71B,0xBA1C,0xBD13,
0xC000,0xBE80,0xBD00,0xBB80,0xC2E1,0xC5B6,0xC880,0xC7B6,0xCB3C,0xCDEC,0xD08D,0xD321,0xD1A2,0xD5A6,0xD81C,0xDA82,0xDCD9,0xDAAA,0xDF1F,0xE155,0xE379,0xE58C,0xE2B3,0xE78D,0xE97D,0xEB59,0xED23,
0xEED9,0xEC41,0xE9A8,0xE70E,0xF07D,0xF20C,0xF387,0xEF74,0xF4EF,0xF641,0xF77F,0xF8A8,0xF407,0xF9BC,0xFABA,0xFBA3,0xFC76,0xF756,0xFD33,0xFDDB,0xFE6C,0xFEE7,0xF955,0xFF4C,0xFF9A,0xFFD3,0xFFF4
};
const unsigned int Timex2[240]={
0x0000,0x0007,0x000D,0x0014,0x001B,0x0021,0x0028,0x002F,0x0035,0x003C,0x0042,0x0049,0x004F,0x0055,0x005C,0x0062,0x0068,0x006E,0x0074,0x007A,0x0080,0x0086,0x008B,0x0091,0x0096,0x009C,0x00A1,0x00A6,0x00AB,0x00B0,
0x00B5,0x00BA,0x00BE,0x00C3,0x00C7,0x00CB,0x00CF,0x00D3,0x00D7,0x00DA,0x00DE,0x00E1,0x00E4,0x00E7,0x00EA,0x00ED,0x00EF,0x00F1,0x00F3,0x00F5,0x00F7,0x00F9,0x00FA,0x00FC,0x00FD,0x00FE,0x00FF,0x00FF,0x00FF,0x00FF,
0x00FF,0x00FF,0x00FF,0x00FF,0x00FF,0x00FE,0x00FD,0x00FC,0x00FA,0x00F9,0x00F7,0x00F5,0x00F3,0x00F1,0x00EF,0x00ED,0x00EA,0x00E7,0x00E4,0x00E1,0x00DE,0x00DA,0x00D7,0x00D3,0x00CF,0x00CB,0x00C7,0x00C3,0x00BE,0x00BA,
0x00B5,0x00B0,0x00AB,0x00A6,0x00A1,0x009C,0x0096,0x0091,0x008B,0x0086,0x0080,0x007A,0x0074,0x006E,0x0068,0x0062,0x005C,0x0055,0x004F,0x0049,0x0042,0x003C,0x0035,0x002F,0x0028,0x0021,0x001B,0x0014,0x000D,0x0007,
0x0000,0xFFFA,0xFFF4,0xFFED,0xFFE6,0xFFE0,0xFFD9,0xFFD2,0xFFCC,0xFFC5,0xFFBF,0xFFB8,0xFFB2,0xFFAC,0xFFA5,0xFF9F,0xFF99,0xFF93,0xFF8D,0xFF87,0xFF81,0xFF7B,0xFF76,0xFF70,0xFF6B,0xFF65,0xFF60,0xFF5B,0xFF56,0xFF51,
0xFF4C,0xFF47,0xFF43,0xFF3E,0xFF3A,0xFF36,0xFF32,0xFF2E,0xFF2A,0xFF27,0xFF23,0xFF20,0xFF1D,0xFF1A,0xFF17,0xFF14,0xFF12,0xFF10,0xFF0E,0xFF0C,0xFF0A,0xFF08,0xFF07,0xFF05,0xFF04,0xFF03,0xFF02,0xFF02,0xFF01,0xFF01,
0xFF01,0xFF01,0xFF01,0xFF02,0xFF02,0xFF03,0xFF04,0xFF05,0xFF07,0xFF08,0xFF0A,0xFF0C,0xFF0E,0xFF10,0xFF12,0xFF14,0xFF17,0xFF1A,0xFF1D,0xFF20,0xFF23,0xFF27,0xFF2A,0xFF2E,0xFF32,0xFF36,0xFF3A,0xFF3E,0xFF43,0xFF47,
0xFF4C,0xFF51,0xFF56,0xFF5B,0xFF60,0xFF65,0xFF6B,0xFF70,0xFF76,0xFF7B,0xFF81,0xFF87,0xFF8D,0xFF93,0xFF99,0xFF9F,0xFFA5,0xFFAC,0xFFB2,0xFFB8,0xFFBF,0xFFC5,0xFFCC,0xFFD2,0xFFD9,0xFFE0,0xFFE6,0xFFED,0xFFF4,0xFFFA
};
const unsigned int Timey2[240]={
0x00FF,0x00FF,0x00FF,0x00FF,0x00FF,0x00FE,0x00FD,0x00FC,0x00FA,0x00F9,0x00F7,0x00F5,0x00F3,0x00F1,0x00EF,0x00ED,0x00EA,0x00E7,0x00E4,0x00E1,0x00DE,0x00DA,0x00D7,0x00D3,0x00CF,0x00CB,0x00C7,0x00C3,0x00BE,0x00BA,
0x00B5,0x00B0,0x00AB,0x00A6,0x00A1,0x009C,0x0096,0x0091,0x008B,0x0086,0x0080,0x007A,0x0074,0x006E,0x0068,0x0062,0x005C,0x0055,0x004F,0x0049,0x0042,0x003C,0x0035,0x002F,0x0028,0x0021,0x001B,0x0014,0x000D,0x0007,
0x0000,0xFFFA,0xFFF4,0xFFED,0xFFE6,0xFFE0,0xFFD9,0xFFD2,0xFFCC,0xFFC5,0xFFBF,0xFFB8,0xFFB2,0xFFAC,0xFFA5,0xFF9F,0xFF99,0xFF93,0xFF8D,0xFF87,0xFF81,0xFF7B,0xFF76,0xFF70,0xFF6B,0xFF65,0xFF60,0xFF5B,0xFF56,0xFF51,
0xFF4C,0xFF47,0xFF43,0xFF3E,0xFF3A,0xFF36,0xFF32,0xFF2E,0xFF2A,0xFF27,0xFF23,0xFF20,0xFF1D,0xFF1A,0xFF17,0xFF14,0xFF12,0xFF10,0xFF0E,0xFF0C,0xFF0A,0xFF08,0xFF07,0xFF05,0xFF04,0xFF03,0xFF02,0xFF02,0xFF01,0xFF01,
0xFF01,0xFF01,0xFF01,0xFF02,0xFF02,0xFF03,0xFF04,0xFF05,0xFF07,0xFF08,0xFF0A,0xFF0C,0xFF0E,0xFF10,0xFF12,0xFF14,0xFF17,0xFF1A,0xFF1D,0xFF20,0xFF23,0xFF27,0xFF2A,0xFF2E,0xFF32,0xFF36,0xFF3A,0xFF3E,0xFF43,0xFF47,
0xFF4C,0xFF51,0xFF56,0xFF5B,0xFF60,0xFF65,0xFF6B,0xFF70,0xFF76,0xFF7B,0xFF81,0xFF87,0xFF8D,0xFF93,0xFF99,0xFF9F,0xFFA5,0xFFAC,0xFFB2,0xFFB8,0xFFBF,0xFFC5,0xFFCC,0xFFD2,0xFFD9,0xFFE0,0xFFE6,0xFFED,0xFFF4,0xFFFA,
0x0000,0x0007,0x000D,0x0014,0x001B,0x0021,0x0028,0x002F,0x0035,0x003C,0x0042,0x0049,0x004F,0x0055,0x005C,0x0062,0x0068,0x006E,0x0074,0x007A,0x0080,0x0086,0x008B,0x0091,0x0096,0x009C,0x00A1,0x00A6,0x00AB,0x00B0,
0x00B5,0x00BA,0x00BE,0x00C3,0x00C7,0x00CB,0x00CF,0x00D3,0x00D7,0x00DA,0x00DE,0x00E1,0x00E4,0x00E7,0x00EA,0x00ED,0x00EF,0x00F1,0x00F3,0x00F5,0x00F7,0x00F9,0x00FA,0x00FC,0x00FD,0x00FE,0x00FF,0x00FF,0x00FF,0x00FF
};
void IRQ6(void) __attribute__ ((ISR));
void IRQ6(void)
{
if(key_mode==0)
{
min_flash=0;
hour_flash=0;
}
if(key_mode==1)
{
hour_flash=0;
min_flash++;
if(min_flash>=12)
{
min_flash=0;
}
}
else if(key_mode==2)
{
min_flash=0;
hour_flash++;
if(hour_flash>=12)
{
hour_flash=0;
}
}
if(*p0==0)
{
key_plus=0;
key_num=0;
key_have=0;
}
if(*p0==1)
{
if(key_have==0)
{
if(key_num<3)
key_num++;
else
{
key_num=0;
key_have=1;
key_mode++;
if(key_mode==3)
key_mode=0;
}
}
}
if(*p0==2)
{
if(key_num<3)
key_num++;
else
{
key_num=0;
if(key_mode==1)
{
key_have=1;
if(*min<238)
*min+=2;
else
*min=0;
}
if(key_mode==2)
{
key_have=1;
if(*hour<238)
*hour+=2;
else
*hour=0;
}
}
}
if(*p0==4)
{
if(key_num<3)
key_num++;
else
{
key_num=0;
if(key_mode==1)
{
key_have=1;
if(*min>1)
*min-=2;
else
*min=238;
}
if(key_mode==2)
{
key_have=1;
if(*hour>1)
*hour-=2;
else
*hour=23;
}
}
}
*intc=2;
}
void Init_MCU()
{
*p0d=0;
*p0d=0;
*p0=0;
__asm("INT OFF");
*oscu=0x80;
*tbu=0x62;
*intu=0x000A;
__asm("INT IRQ");
}
void Circle()
{
unsigned int i;
for(i=0;i<404;i++)
{
*da0=Timex[i];
*da1=Timey[i];
}
}
void Point()
{
unsigned int i;
for(i=0;i<110;i+=2)
{
*da0=Timex2[*sec]*i+32768;
*da1=Timey2[*sec]*i+32768;
}
for(i=107;i>2;i-=2)
{
*da0=Timex2[*sec]*i+32768;
*da1=Timey2[*sec]*i+32768;
}
if(min_flash<10)
{
for(i=0;i<86;i+=4)
{
*da0=Timex2[*min]*i+32768;
*da1=Timey2[*min]*i+32768;
}
for(i=86;i>4;i-=4)
{
*da0=Timex2[*min]*i+32768;
*da1=Timey2[*min]*i+32768;
}
}
if(hour_flash<10)
{
for(i=0;i<66;i+=4)
{
*da0=Timex2[*hour]*i+32768;
*da1=Timey2[*hour]*i+32768;
}
for(i=66;i>4;i-=4)
{
*da0=Timex2[*hour]*i+32768;
*da1=Timey2[*hour]*i+32768;
}
}
}
int main()
{
unsigned int i;
*sec=0;
*min=0;
*hour=0;
key_num=0;
fast=0;
key_mode=0;
key_have=0;
Init_MCU();
while(1)
{
*wdogc=1;
Circle();
Point();
}
}
SPCE061A辅助开发工具
(作者置顶)
SPCE061A单片机硬件端口操作的头
(作者置顶)
#ifndef __reg061_H__
#define __reg061_H__
//-----------------------------------------------------------------------------------
//SPCE061A硬件端口操作头
//桂林电子工业学院 通信与信息工程系 科技协会
//可以位操作,可以对字节操作,每一个单元(单位为16位的字)可以分为高八位和低八位操作;
//使用方法:下面的硬件寄存器都定义为了UNport结构体型的指针变量;
//端口名->bit.bit0就可以操作端口的第0位;
//端口名->byte.bytel就可以操作端口的低八位;
//端口名->port就可以操作整个端口;
//------------------------------------------------------------------------------------
#define Uint unsigned int
typedef struct
{
Uint bit0 : 1;
Uint bit1 : 1;
Uint bit2nbsp; : 1;
Uint bit3 : 1;
Uint bit4 : 1;
Uint bit5 : 1;
Uint bit6 : 1;
Uint bit7 : 1;
Uint bit8 : 1;
Uint bit9 : 1;
Uint bit10 : 1;
Uint bit11 : 1;
Uint bit12 : 1;
Uint bit13 : 1;
Uint bit14 : 1;
Uint bit15 : 1;
}Bit;
typedef struct
{
Uint bytel : 8;
Uint byteh : 8;
}Byte;
typedef struct
{
Uint rsc : 6;
Uint pwm : 4;
Uint others : 6;
}Tunit;
typedef union
{
Bit bit;
Byte byte;
Tunit tunit;
Uint port;
}UNport;
#define PA ((volatile UNport *)(0x7000))
#define PA_Buffer ((volatile UNport *)(0x7001))
#define PA_Dir ((volatile UNport *)(0x7002))
#define PA_Attrib ((volatile UNport *)(0x7003))
#define PA_Latch ((volatile UNport *)(0x7004))
#define PB ((volatile UNport *)(0x7005))
#define PB_Buffer ((volatile UNport *)(0x7006))
#define PB_Dir ((volatile UNport *)(0x7007))
#define PB_Attrib ((volatile UNport *)(0x7008))
#define Poscu ((volatile UNport *)(0x7013))
#define Ptbu ((volatile UNport *)(0x700e))
#define Ptbc ((volatile UNport *)(0x700f))
#define Pt0 ((volatile UNport *)(0x700a))
#define Pt1 ((volatile UNport *)(0x700c))
#define Pt0u ((volatile UNport *)(0x700b))
#define Pt1u ((volatile UNport *)(0x700d))
#define Pintu ((volatile UNport *)(0x7010))
#define Pintc ((volatile UNport *)(0x7011))
#define Padm ((volatile UNport *)(0x7014))
#define Padl ((volatile UNport *)(0x702c))
#define Padu ((volatile UNport *)(0x7015))
#define Padmuxu ((volatile UNport *)(0x702b))
#define Pda0 ((volatile UNport *)(0x7017))
#define Pda1 ((volatile UNport *)(0x7016))
#define Pdau ((volatile UNport *)(0x702a))
#define Pwdogc ((volatile UNport *)(0x7012))
#define Pflashu ((volatile UNport *)(0x7555))
#define Watchdog_Clear Pwdogc->port
#define P0_0 PA->bit.bit0
#define P0_1 PA->bit.bit1
#define P0_2 PA->bit.bit2
#define P0_3 PA->bit.bit3
#define P0_4 PA->bit.bit4
#define P0_5 PA->bit.bit5
#define P0_6 PA->bit.bit6
#define P0_7 PA->bit.bit7
#define P0_8 PA->bit.bit8
#define P0_9 PA->bit.bit9
#define P0_10 PA->bit.bit10
#define P0_11 PA->bit.bit11
#define P0_12 PA->bit.bit12
#define P0_13 PA->bit.bit13
#define P0_14 PA->bit.bit14
#define P0_15 PA->bit.bit15
#define P1_0 PB->bit.bit0
#define P1_1 PB->bit.bit1
#define P1_2 PB->bit.bit2
#define P1_3 PB->bit.bit3
#define P1_4 PB->bit.bit4
#define P1_5 PB->bit.bit5
#define P1_6 PB->bit.bit6
#define P1_7 PB->bit.bit7
#define P1_8 PB->bit.bit8
#define P1_9 PB->bit.bit9
#define P1_10 PB->bit.bit10
#define P1_11 PB->bit.bit11
#define P1_12 PB->bit.bit12
#define P1_13 PB->bit.bit13
#define P1_14 PB->bit.bit14
#define P1_15 PB->bit.bit15
#define P0 PA->port
#define P0_Buffer PA_Buffer->port
#define P0_Dir PA_Dir->port
#define P0_Attrib PA_Attrib->port
#define P0_Latch PA_Latch->port
#define P0_Lowbyte PA->byte.bytel
#define P0_Highbyte PA->byte.byteh
#define P0_Dir_Lowbyte PA_Dir->byte.bytel
#define P0_Dir_Highbyte PA_Dir->byte.byteh
#define P0_Attrib_Lowbyte PA_Attrib->byte.bytel
#define P0_Attrib_Highbyte PA_Attrib->byte.byteh
#define P1 PB->port
#define P1_Buffer PB_Buffer->port
#define P1_Dir PB_Dir->port
#define P1_Attrib PB_Attrib->port
#define P1_Lowbyte PB->byte.bytel
#define P1_Highbyte PB->byte.byteh
#define P1_Dir_Lowbyte PB_Dir->byte.bytel
#define P1_Dir_Highbyte PB_Dir->byte.byteh
#define P1_Attrib_Lowbyte PB_Attrib->byte.bytel
#define P1_Attrib_Highbyte PB_Attrib->byte.byteh
#define OSC_Unit Poscu->port
#define Timebase_Unit Ptbu->port
#define Timebase_Clear Ptbc->port
#define T0 Pt0->port
#define T1 Pt1->port
#define TA_Unit Pt0u->port
#define TB_Unit Pt1u->port
#define INT_Unit Pintu->port
#define INT_Clear Pintc->port
#define AD_Unit Padu->port
#define ADMUX_Unit Padmuxu->port
#define AD_Mic Padm->port
#define AD_Line Padl->port
#define DA_Unit Pdau->port
#define DA0 Pda0->port
#define DA1 Pda1->port
#define Flash_Unit Pflashu->port
#define T0_Unit Pt0u->tunit.rsc
#define T1_Unit Pt1u->tunit.rsc
#define PWM0 Pt0u->tunit.pwm
#define PWM1 Pt1u->tunit.pwm
#define EXT0 PB->bit.bit2
#define EXT1 PB->bit.bit3
#define EXT0_Dir PB_Dir->bit.bit2
#define EXT1_Dir PB_Dir->bit.bit3
#define EXT0_Attrib PB_Attrib->bit.bit2
#define EXT1_Attrib PB_Attrib->bit.bit3
#define UART_Unit1 Puartu1->byte.bytel
#define UART_Unit2 Puartu2->byte.bytel
#define UART Puart->byte.bytel
#define UART_Baud_Low Puartbaudl->byte.bytel
#define UART_Baud_High Puartbaudh->byte.bytel
#define SCK_Dir PB_Dir->bit.bit0
#define SDA_Dir PB_Dir->bit.bit1
#define SCK_Attrib PB_Attrib->bit.bit0
#define SDA_Attrib PB_Attrib->bit.bit1
#define SCK P1_0
#define SDA P1_1
#define Rx_Dir PB_Dir->bit.bit7
#define Tx_Dir PB_Dir->bit.bit10
#define Rx_Attrib PB_Attrib->bit.bit7
#define Tx_Attrib PB_Attrib->bit.bit10
#define Rx P1_7
#define Tx P1_10
#define Rx_Int_EN Puartu1->bit.bit7
#define Tx_Int_EN Puartu1->bit.bit6
#define UART_Reset Puartu1->bit.bit5
#define Parity Puartu1->bit.bit3
#define Parity_EN Puartu1->bit.bit7
#define Rx_EM Puartu2->bit.bit7
#define Tx_EM Puartu2->bit.bit6
#define Rx_RDY Puartu2->bit.bit7
#define Tx_RDY Puartu2->bit.bit6
#define UART_FE Puartu2->bit.bit5
#define UART_OE Puartu2->bit.bit4
#define UART_PE Puartu2->bit.bit3
#endif
博客搬家
以后不在这里写东西了,
还政于民
不能轻易答应别人
| ||||
这样不但让自己很累,也可能把别人耽误了,本来对别人可能是小事一桩,但对自己来说可能会很费力,这样就不如拒绝别人。 牺牲自己并不一定给别人带来很多好处,反而可能会带着牺牲朋友。——一个电视剧里说的,当时听到这句话心想:真他妈的说到劳资处理事情的关键了,真想亲那家伙一口,只可惜说话的是个老女人,不好看。 | ||||