interrupt | asm addr. | c |
---|---|---|
ext0: | 0003h | 0 |
timer0: | 000Bh | 1 |
ext1: | 0013h | 2 |
timer1: | 001Bh | 3 |
serial: | 0023h | 4 |
timer2: | 002Bh | 5 |
$NOMOD51
$include (AT898252.h)
org 0000h
LJMP start
; vvvv Interrupt sprungbefehle
org 0003h
LJMP int0_isr
; vvvv Main Program
start:
; ...
; vvvv Interrupt Service Routines
int0_isr:
; ...
RETI
; Programmende
END
Ports: P2.3
Konstanten:
#0A1h
entspr. 0xA1
#1d
entspr. 0d1
Kommentare: ; Kommentar
vollständige Dokumentation für Cx51 hier.
#include<AT898252.h>
// data type aliases for convenience, can be ignored
#define u8 unsigned char
#define i8 char
#define u16 unsigned int
#define i16 int
#define u32 unsigned long int
#define i32 long int
// vvvv Function Prototypes, required for Cx51
void init();
void int0();
void main() {
init();
// ...
}
// vvvv Setup the interrupts
void init() {
IT0 = 1; // falling edge triggered
// state triggered: 0
EX0 = 1; // Enable EXT0
EA = 1; // Enable Interrupts
}
// vvvv Interrupt Service Routine
void int0() interrupt 0 {
// ...
}
Ports: P2_3
Kommentare:
// Kommentar
/*
Kommentar
*/
Arrays:
int x[5];
int y[3] = {3, 4, 5}
int z[] = {3, 4, 5}; // Größe implizit
char r[13] = "Hello, World!" // char-arrays als Strings
type | ort |
---|---|
data |
direkt adressierbarer interner unterer RAM |
bdata |
bitwise adressierbarer interner unterer RAM |
idata |
indirekt adressierbarer interner oberer RAM |
pdata |
'paged' externer Datenspeicher |
xdata |
externer Datenspeicher |
code |
Programmspeicher |
Nutzung:
unsigned int data x = 3;
char idata y = "a";
type | description |
---|---|
unsigned char |
8-bit unsigned integer |
char |
8-bit signed integer, zusätzlich ASCII character |
unsigned int |
16-bit unsigned integer, equivalent zu unsigned short int |
int |
16-bit signed integer, equivalent zu short int |
unsigned long int |
32-bit unsigned integer |
long int |
32-bit signed integer |
float |
32-bit floating-point, equivalent zu double |
type | size |
---|---|
sbit |
1 Bit |
sfr |
1 Byte |
sfr 16 |
2 Byte |
∧ : AND
∨ : OR
¬ : NOT
b | x | d | o |
---|---|---|---|
0000 | 0 | 0 | 0 |
0001 | 1 | 1 | 1 |
0010 | 2 | 2 | 2 |
0011 | 3 | 3 | 3 |
0100 | 4 | 4 | 4 |
0101 | 5 | 5 | 5 |
0110 | 6 | 6 | 6 |
0111 | 7 | 7 | 7 |
1000 | 8 | 8 | 10 |
1001 | 9 | 9 | 11 |
1010 | A | 10 | 12 |
1011 | B | 11 | 13 |
1100 | C | 12 | 14 |
1101 | D | 13 | 15 |
1110 | E | 14 | 16 |
1111 | F | 15 | 17 |