合泰单片机总结
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
fun(>
{
}
void ISR_tmr0(void>
{
#asm
call _fun。
#endasm
}
7.宏定义
#define_pa0_12_0//bit 0 of RAM address 0x12
8.位变量定义
对于有多个bank的MCU,位变量只能定义在bank0,使用如下方式
#pragma rambank0
12.编译器特殊选项
13.内嵌函数
14.注意事项
15.
16.申明:
17.所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。
18.
合泰单片机总结
--测试环Байду номын сангаасC编译器V2
1.Debug
2.
3..数组,支持一维/二维数组(大小小于1bank>;
4.使用const关键字,变量将存储于程序存储区,如,const uint8_t tab[] = “1,2,3”。b5E2RGbCAP
5.中断服务函数:
#pragma vector ISR_tmr0 @ 0x0c//定义中断入口地址
bit flag 。
#pragma norambank
9.指针
(1)不支持指向“字符串数组”
char *rainbow[] = { "red", "orange", "yellow" }。// not supportedp1EanqFDPw
(2)只支持全局的静态函数指针,且所指函数不能带有参数
fun(>
MOV CR4,A 。 CR4→r
#endasm
#asm // fun(d2,d1>
MOV A,CR2
MOV fun0,A 。 p1 = d2
MOV A,CR1
MOV fun1,A
MOV A,CR1[1]
MOV fun1[1],A 。 p2 = d1
CALL _fun
#endasm
}
11.预编译指令
int *a。
a = &ldc。 // cannot pass
}
10.内嵌汇编
#asm
[label:] opcode [operands]
...
#endasm
Eg:
char a。
int b。
voidfun(char p1,int p2>
{
a = p1。
#asm // b = p2。
MOV A,fun1
MOV _b,A
MOV A,fun1[1]
mov _b[1],A
#endasm
}
void main(>
{
int d1。
char d2。
unsigned char q, r。
r = 0。
q = d1 / d2。 // get quotient
#asm // r = q。
MOV A, CR3 。 CR3→q
{
return 1。
}
int (*const p>(> =fun。 // global and initialization requiredDXDiTa9E3d
void main(>
{
int a。
a=(*p>(>。
}
(3)不支持取得const常量的地址
const int ldc = 0。
void main(>{
void ISR_tmr0(void>
{
tick++ 。}
6.中断函数中调用普通函数
(1>方法1
#pragma vector ISR_tmr0 @ 0x0c
#pragma nolocal fun
fun(>
{
}
void ISR_tmr0(void>
{
fun(> 。
}
(2>方法2
#pragma vector ISR_tmr0 @ 0x0c
{
}
void ISR_tmr0(void>
{
#asm
call _fun。
#endasm
}
7.宏定义
#define_pa0_12_0//bit 0 of RAM address 0x12
8.位变量定义
对于有多个bank的MCU,位变量只能定义在bank0,使用如下方式
#pragma rambank0
12.编译器特殊选项
13.内嵌函数
14.注意事项
15.
16.申明:
17.所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。
18.
合泰单片机总结
--测试环Байду номын сангаасC编译器V2
1.Debug
2.
3..数组,支持一维/二维数组(大小小于1bank>;
4.使用const关键字,变量将存储于程序存储区,如,const uint8_t tab[] = “1,2,3”。b5E2RGbCAP
5.中断服务函数:
#pragma vector ISR_tmr0 @ 0x0c//定义中断入口地址
bit flag 。
#pragma norambank
9.指针
(1)不支持指向“字符串数组”
char *rainbow[] = { "red", "orange", "yellow" }。// not supportedp1EanqFDPw
(2)只支持全局的静态函数指针,且所指函数不能带有参数
fun(>
MOV CR4,A 。 CR4→r
#endasm
#asm // fun(d2,d1>
MOV A,CR2
MOV fun0,A 。 p1 = d2
MOV A,CR1
MOV fun1,A
MOV A,CR1[1]
MOV fun1[1],A 。 p2 = d1
CALL _fun
#endasm
}
11.预编译指令
int *a。
a = &ldc。 // cannot pass
}
10.内嵌汇编
#asm
[label:] opcode [operands]
...
#endasm
Eg:
char a。
int b。
voidfun(char p1,int p2>
{
a = p1。
#asm // b = p2。
MOV A,fun1
MOV _b,A
MOV A,fun1[1]
mov _b[1],A
#endasm
}
void main(>
{
int d1。
char d2。
unsigned char q, r。
r = 0。
q = d1 / d2。 // get quotient
#asm // r = q。
MOV A, CR3 。 CR3→q
{
return 1。
}
int (*const p>(> =fun。 // global and initialization requiredDXDiTa9E3d
void main(>
{
int a。
a=(*p>(>。
}
(3)不支持取得const常量的地址
const int ldc = 0。
void main(>{
void ISR_tmr0(void>
{
tick++ 。}
6.中断函数中调用普通函数
(1>方法1
#pragma vector ISR_tmr0 @ 0x0c
#pragma nolocal fun
fun(>
{
}
void ISR_tmr0(void>
{
fun(> 。
}
(2>方法2
#pragma vector ISR_tmr0 @ 0x0c