📄 main1.c
字号:
/************************************************************************************
* Filename: iotest.c
*
* Description: This program only test IO port in S3C4510B
* P0 controls LED1
* P2 controls LED2
*
* Author:
*
* Date: 2004.2.6
*
************************************************************************************/
#include "../uhal/s3c4510b.h"
#define VolUIntPointer *(volatile unsigned int *)
#define SpecialReg_BaseAddr 0x03FF0000
#define IOPMOD (VolUIntPointer(SpecialReg_BaseAddr+0x5000))
#define IOPCON (VolUIntPointer(SpecialReg_BaseAddr+0x5004))
#define IOPDATA (VolUIntPointer(SpecialReg_BaseAddr+0x5008))
//void ISR_IrqHandler(void);
//void ISR_FiqHandler(void);
#define SEGMENT_A 0x01 // Bitmaps for 7-segment
#define SEGMENT_B 0x02
#define SEGMENT_C 0x04
#define SEGMENT_D 0x08
#define SEGMENT_DP 0x10
#define SEGMENT_E 0x20
#define SEGMENT_F 0x40
#define SEGMENT_G 0x80
#define SYS_BASE 0x03ff0000
#define SRAM_BASE 0x03fe0000
#define IO_BASE 0x03600000
#define IO_BANK0 (*(volatile unsigned int *)(IO_BASE + 0x0000))
#define IO_BANK1 (*(volatile unsigned int *)(IO_BASE + 0x4000))
#define IO_BANK2 (IO_BASE + 0x8000)
#define IO_BANK3 (IO_BASE + 0xc000)
#define NONCACHEABLE_BASE 0x04000000
/*
#define DIGIT_F ((SEGMENT_A | SEGMENT_B | SEGMENT_C | SEGMENT_D | SEGMENT_E | SEGMENT_F) << 24)
#define DIGIT_E ((SEGMENT_B | SEGMENT_C) << 24)
#define DIGIT_D ((SEGMENT_A | SEGMENT_B | SEGMENT_G | SEGMENT_E | SEGMENT_D) << 24)
#define DIGIT_C ((SEGMENT_A | SEGMENT_B | SEGMENT_C | SEGMENT_D | SEGMENT_G) << 24)
#define DIGIT_B ((SEGMENT_F | SEGMENT_G | SEGMENT_B | SEGMENT_C) << 24)
#define DIGIT_A ((SEGMENT_A | SEGMENT_F | SEGMENT_G | SEGMENT_C | SEGMENT_D) << 24)
#define DIGIT_9 ((SEGMENT_A | SEGMENT_F | SEGMENT_E | SEGMENT_D | SEGMENT_C | SEGMENT_G) << 24)
#define DIGIT_8 ((SEGMENT_A | SEGMENT_B | SEGMENT_C) << 24)
#define DIGIT_7 ((SEGMENT_A | SEGMENT_B | SEGMENT_C | SEGMENT_D | SEGMENT_E | SEGMENT_F | SEGMENT_G) << 24)
#define DIGIT_6 ((SEGMENT_G | SEGMENT_F | SEGMENT_A | SEGMENT_B | SEGMENT_C) << 24)
#define DIGIT_5 ((SEGMENT_E | SEGMENT_F | SEGMENT_A | SEGMENT_B | SEGMENT_C | SEGMENT_G) << 24)
#define DIGIT_4 ((SEGMENT_F | SEGMENT_E | SEGMENT_D | SEGMENT_C | SEGMENT_G) << 24)
#define DIGIT_3 ((SEGMENT_A | SEGMENT_F | SEGMENT_E | SEGMENT_D) << 24)
#define DIGIT_2 ((SEGMENT_B | SEGMENT_C | SEGMENT_D | SEGMENT_E | SEGMENT_G) << 24)
#define DIGIT_1 ((SEGMENT_A | SEGMENT_F | SEGMENT_E | SEGMENT_D | SEGMENT_G) << 24)
#define DIGIT_0 ((SEGMENT_A | SEGMENT_F | SEGMENT_E | SEGMENT_G) << 24)
*/
#define DIGIT_F ((SEGMENT_B | SEGMENT_C | SEGMENT_D | SEGMENT_DP)<<24)
#define DIGIT_E ((SEGMENT_B | SEGMENT_C | SEGMENT_DP) <<24)
#define DIGIT_D ((SEGMENT_A | SEGMENT_F | SEGMENT_DP)<<24)
#define DIGIT_C ((SEGMENT_B | SEGMENT_C | SEGMENT_G | SEGMENT_DP)<<24)
#define DIGIT_B ((SEGMENT_A | SEGMENT_B | SEGMENT_DP) <<24)
#define DIGIT_A ((SEGMENT_D | SEGMENT_DP) << 24)
#define DIGIT_9 ((SEGMENT_E | SEGMENT_DP) <<24)
#define DIGIT_8 ((SEGMENT_DP) <<24)
#define DIGIT_7 ((SEGMENT_D | SEGMENT_E | SEGMENT_F | SEGMENT_G | SEGMENT_DP) <<24)
#define DIGIT_6 ((SEGMENT_B | SEGMENT_DP) <<24)
#define DIGIT_5 ((SEGMENT_E | SEGMENT_B | SEGMENT_DP) <<24)
#define DIGIT_4 ((SEGMENT_A | SEGMENT_E | SEGMENT_D | SEGMENT_DP) <<24)
#define DIGIT_3 ((SEGMENT_F | SEGMENT_E | SEGMENT_DP)<<24)
#define DIGIT_2 ((SEGMENT_C | SEGMENT_F | SEGMENT_DP) <<24)
#define DIGIT_1 ((SEGMENT_A | SEGMENT_F | SEGMENT_E | SEGMENT_D | SEGMENT_G | SEGMENT_DP) <<24)
#define DIGIT_0 ((SEGMENT_G | SEGMENT_DP)<<24 )
//void Set8Led(int n);
//void sleep(int i);
void sleep(int i)
{
int b;
for( b = 0 ; b < 65000*i ; b++ )
;
}
void Set8Led(int n)
{
unsigned int ctrl [] =
{ DIGIT_0, DIGIT_1, DIGIT_2, DIGIT_3, DIGIT_4, DIGIT_5, DIGIT_6, DIGIT_7,
DIGIT_8, DIGIT_9, DIGIT_A, DIGIT_B, DIGIT_C, DIGIT_D, DIGIT_E, DIGIT_F };
if( (0<=n) && (n<(sizeof(ctrl)/sizeof(unsigned char))) )
{
// IO_BANK0 = ~ctrl[n];
IO_BANK0 = ctrl[n];
}
// IO_BANK0 = ~ctrl[7];
}
void TickCHandler(void)
{
// INTPEND = BIT_TIMER0_INTR; // 清除中断挂起标志
IOPDATA = (IOPDATA)^0x0003;
}
/*********************************************
* Function name: C_main
* Description: the entry piont of C code
*
*********************************************/
void Main(void)
{
int i =16;
IOPMOD = 0x000000FF;
IOPCON = 0x00000000;
uHALr_InitInterrupts();
uHALr_InitTimers();
uHALr_InstallSystemTimer();
for(;;)
{
for (i = 16; --i >= 0; )
{
// Set8Led(i); //display number 'i' on the 7 segments LED
// sleep(10); // wait 1 second
// IOPDATA = (IOPDATA)^0x0003;
}
if( i == 0)
i = 16;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -