单片机中一定要有个main()吗

[复制链接]
7330|34
sedatefire 发表于 2012-7-12 15:49 | 显示全部楼层
约定熟成的规矩罢了,无所谓main不main的
单片机执行顺序是这样的
上电-->跳到复位中断向量表--->跳转到初始化启动代码--->
在启动代码里面有类似这样一句话
jmp __main
或者
load  pc, __main
jmp
而.c档中的main函数经过编译器编译后,其词法表示就是__main
所以你可以把mian任意名字命名,只要你改了启动代码里面的对应部分即可
czdo 发表于 2012-7-12 16:41 | 显示全部楼层
你只是用汇编,没有main
eydj2008 发表于 2012-7-12 18:36 | 显示全部楼层
谁说C语言必须得有  就不能将MAIN搞一个 X()  Y() .... ?
这是由汇编的启动文件决定的 既然启动文件定义为MAIN() 大家都照这样执行罢了  表示程序从这里(这个地址)开始执行
qq65411253 发表于 2012-7-12 19:04 | 显示全部楼层
汇编不用main。而用操作系统则可以有多个main,main退出后即返回操作系统。
zcx2012 发表于 2012-7-12 19:09 | 显示全部楼层
这个是C语言规定的
rush1988 发表于 2012-7-12 19:54 | 显示全部楼层
这个就跟“1+1=2”似的,就是这样规定的。
杜专 发表于 2012-7-12 20:47 | 显示全部楼层
可以 不要写MAIN  换个名字也行  有的编译器可以设置的
雷影少年 发表于 2012-7-12 21:39 | 显示全部楼层
换个名字和用main有区别吗?
感觉都是一样的,不过是另一种形式的main罢了
fjzzclc 发表于 2012-7-13 14:44 | 显示全部楼层
只有一个MAIN
dlyt_test001 发表于 2012-7-13 15:12 | 显示全部楼层
可以不用main 前提是你得自己写编译器里面启动的.s文件
kangwuwei 发表于 2012-7-12 11:29

支持。一般那个启动的S文件里的最后一句是一个跳转。对于集成的开发环境,默认的是MAIN。你把它改成什么都可以。
sedatefire 发表于 2012-7-13 15:15 | 显示全部楼层
约定熟成的规矩罢了,无所谓main不main的
单片机执行顺序是这样的
上电-->跳到复位中断向量表--->跳转到初始化启动代码--->
在启动代码里面有类似这样一句话
jmp __main
或者
load  pc, __main
jmp
而.c档中的main函数经过编译器编译后,其词法表示就是__main
所以你可以把mian任意名字命名,只要你改了启动代码里面的对应部分即可
 楼主| yongzai 发表于 2012-7-16 00:27 | 显示全部楼层
谢谢各位的回答 不知5楼说的对不对 谢谢5楼
xxdcq 发表于 2012-7-17 09:10 | 显示全部楼层
6# ocon
汇编有无形的main(),不是表面的
呵呵!
dlyt_test001 发表于 2012-7-17 11:20 | 显示全部楼层
随便用GO TO,想到哪里就到哪里。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部